<!DOCTYPE html>
<html>
<head><meta charset="utf-8" />
<title>image_classification_ZH-CN</title><script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.1.10/require.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script>

<style type="text/css">
    /*!
*
* Twitter Bootstrap
*
*/
/*!
 * Bootstrap v3.3.7 (http://getbootstrap.com)
 * Copyright 2011-2016 Twitter, Inc.
 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
 */
/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */
html {
  font-family: sans-serif;
  -ms-text-size-adjust: 100%;
  -webkit-text-size-adjust: 100%;
}
body {
  margin: 0;
}
article,
aside,
details,
figcaption,
figure,
footer,
header,
hgroup,
main,
menu,
nav,
section,
summary {
  display: block;
}
audio,
canvas,
progress,
video {
  display: inline-block;
  vertical-align: baseline;
}
audio:not([controls]) {
  display: none;
  height: 0;
}
[hidden],
template {
  display: none;
}
a {
  background-color: transparent;
}
a:active,
a:hover {
  outline: 0;
}
abbr[title] {
  border-bottom: 1px dotted;
}
b,
strong {
  font-weight: bold;
}
dfn {
  font-style: italic;
}
h1 {
  font-size: 2em;
  margin: 0.67em 0;
}
mark {
  background: #ff0;
  color: #000;
}
small {
  font-size: 80%;
}
sub,
sup {
  font-size: 75%;
  line-height: 0;
  position: relative;
  vertical-align: baseline;
}
sup {
  top: -0.5em;
}
sub {
  bottom: -0.25em;
}
img {
  border: 0;
}
svg:not(:root) {
  overflow: hidden;
}
figure {
  margin: 1em 40px;
}
hr {
  box-sizing: content-box;
  height: 0;
}
pre {
  overflow: auto;
}
code,
kbd,
pre,
samp {
  font-family: monospace, monospace;
  font-size: 1em;
}
button,
input,
optgroup,
select,
textarea {
  color: inherit;
  font: inherit;
  margin: 0;
}
button {
  overflow: visible;
}
button,
select {
  text-transform: none;
}
button,
html input[type="button"],
input[type="reset"],
input[type="submit"] {
  -webkit-appearance: button;
  cursor: pointer;
}
button[disabled],
html input[disabled] {
  cursor: default;
}
button::-moz-focus-inner,
input::-moz-focus-inner {
  border: 0;
  padding: 0;
}
input {
  line-height: normal;
}
input[type="checkbox"],
input[type="radio"] {
  box-sizing: border-box;
  padding: 0;
}
input[type="number"]::-webkit-inner-spin-button,
input[type="number"]::-webkit-outer-spin-button {
  height: auto;
}
input[type="search"] {
  -webkit-appearance: textfield;
  box-sizing: content-box;
}
input[type="search"]::-webkit-search-cancel-button,
input[type="search"]::-webkit-search-decoration {
  -webkit-appearance: none;
}
fieldset {
  border: 1px solid #c0c0c0;
  margin: 0 2px;
  padding: 0.35em 0.625em 0.75em;
}
legend {
  border: 0;
  padding: 0;
}
textarea {
  overflow: auto;
}
optgroup {
  font-weight: bold;
}
table {
  border-collapse: collapse;
  border-spacing: 0;
}
td,
th {
  padding: 0;
}
/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */
@media print {
  *,
  *:before,
  *:after {
    background: transparent !important;
    color: #000 !important;
    box-shadow: none !important;
    text-shadow: none !important;
  }
  a,
  a:visited {
    text-decoration: underline;
  }
  a[href]:after {
    content: " (" attr(href) ")";
  }
  abbr[title]:after {
    content: " (" attr(title) ")";
  }
  a[href^="#"]:after,
  a[href^="javascript:"]:after {
    content: "";
  }
  pre,
  blockquote {
    border: 1px solid #999;
    page-break-inside: avoid;
  }
  thead {
    display: table-header-group;
  }
  tr,
  img {
    page-break-inside: avoid;
  }
  img {
    max-width: 100% !important;
  }
  p,
  h2,
  h3 {
    orphans: 3;
    widows: 3;
  }
  h2,
  h3 {
    page-break-after: avoid;
  }
  .navbar {
    display: none;
  }
  .btn > .caret,
  .dropup > .btn > .caret {
    border-top-color: #000 !important;
  }
  .label {
    border: 1px solid #000;
  }
  .table {
    border-collapse: collapse !important;
  }
  .table td,
  .table th {
    background-color: #fff !important;
  }
  .table-bordered th,
  .table-bordered td {
    border: 1px solid #ddd !important;
  }
}
@font-face {
  font-family: 'Glyphicons Halflings';
  src: url('../components/bootstrap/fonts/glyphicons-halflings-regular.eot');
  src: url('../components/bootstrap/fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'), url('../components/bootstrap/fonts/glyphicons-halflings-regular.woff2') format('woff2'), url('../components/bootstrap/fonts/glyphicons-halflings-regular.woff') format('woff'), url('../components/bootstrap/fonts/glyphicons-halflings-regular.ttf') format('truetype'), url('../components/bootstrap/fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg');
}
.glyphicon {
  position: relative;
  top: 1px;
  display: inline-block;
  font-family: 'Glyphicons Halflings';
  font-style: normal;
  font-weight: normal;
  line-height: 1;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}
.glyphicon-asterisk:before {
  content: "\002a";
}
.glyphicon-plus:before {
  content: "\002b";
}
.glyphicon-euro:before,
.glyphicon-eur:before {
  content: "\20ac";
}
.glyphicon-minus:before {
  content: "\2212";
}
.glyphicon-cloud:before {
  content: "\2601";
}
.glyphicon-envelope:before {
  content: "\2709";
}
.glyphicon-pencil:before {
  content: "\270f";
}
.glyphicon-glass:before {
  content: "\e001";
}
.glyphicon-music:before {
  content: "\e002";
}
.glyphicon-search:before {
  content: "\e003";
}
.glyphicon-heart:before {
  content: "\e005";
}
.glyphicon-star:before {
  content: "\e006";
}
.glyphicon-star-empty:before {
  content: "\e007";
}
.glyphicon-user:before {
  content: "\e008";
}
.glyphicon-film:before {
  content: "\e009";
}
.glyphicon-th-large:before {
  content: "\e010";
}
.glyphicon-th:before {
  content: "\e011";
}
.glyphicon-th-list:before {
  content: "\e012";
}
.glyphicon-ok:before {
  content: "\e013";
}
.glyphicon-remove:before {
  content: "\e014";
}
.glyphicon-zoom-in:before {
  content: "\e015";
}
.glyphicon-zoom-out:before {
  content: "\e016";
}
.glyphicon-off:before {
  content: "\e017";
}
.glyphicon-signal:before {
  content: "\e018";
}
.glyphicon-cog:before {
  content: "\e019";
}
.glyphicon-trash:before {
  content: "\e020";
}
.glyphicon-home:before {
  content: "\e021";
}
.glyphicon-file:before {
  content: "\e022";
}
.glyphicon-time:before {
  content: "\e023";
}
.glyphicon-road:before {
  content: "\e024";
}
.glyphicon-download-alt:before {
  content: "\e025";
}
.glyphicon-download:before {
  content: "\e026";
}
.glyphicon-upload:before {
  content: "\e027";
}
.glyphicon-inbox:before {
  content: "\e028";
}
.glyphicon-play-circle:before {
  content: "\e029";
}
.glyphicon-repeat:before {
  content: "\e030";
}
.glyphicon-refresh:before {
  content: "\e031";
}
.glyphicon-list-alt:before {
  content: "\e032";
}
.glyphicon-lock:before {
  content: "\e033";
}
.glyphicon-flag:before {
  content: "\e034";
}
.glyphicon-headphones:before {
  content: "\e035";
}
.glyphicon-volume-off:before {
  content: "\e036";
}
.glyphicon-volume-down:before {
  content: "\e037";
}
.glyphicon-volume-up:before {
  content: "\e038";
}
.glyphicon-qrcode:before {
  content: "\e039";
}
.glyphicon-barcode:before {
  content: "\e040";
}
.glyphicon-tag:before {
  content: "\e041";
}
.glyphicon-tags:before {
  content: "\e042";
}
.glyphicon-book:before {
  content: "\e043";
}
.glyphicon-bookmark:before {
  content: "\e044";
}
.glyphicon-print:before {
  content: "\e045";
}
.glyphicon-camera:before {
  content: "\e046";
}
.glyphicon-font:before {
  content: "\e047";
}
.glyphicon-bold:before {
  content: "\e048";
}
.glyphicon-italic:before {
  content: "\e049";
}
.glyphicon-text-height:before {
  content: "\e050";
}
.glyphicon-text-width:before {
  content: "\e051";
}
.glyphicon-align-left:before {
  content: "\e052";
}
.glyphicon-align-center:before {
  content: "\e053";
}
.glyphicon-align-right:before {
  content: "\e054";
}
.glyphicon-align-justify:before {
  content: "\e055";
}
.glyphicon-list:before {
  content: "\e056";
}
.glyphicon-indent-left:before {
  content: "\e057";
}
.glyphicon-indent-right:before {
  content: "\e058";
}
.glyphicon-facetime-video:before {
  content: "\e059";
}
.glyphicon-picture:before {
  content: "\e060";
}
.glyphicon-map-marker:before {
  content: "\e062";
}
.glyphicon-adjust:before {
  content: "\e063";
}
.glyphicon-tint:before {
  content: "\e064";
}
.glyphicon-edit:before {
  content: "\e065";
}
.glyphicon-share:before {
  content: "\e066";
}
.glyphicon-check:before {
  content: "\e067";
}
.glyphicon-move:before {
  content: "\e068";
}
.glyphicon-step-backward:before {
  content: "\e069";
}
.glyphicon-fast-backward:before {
  content: "\e070";
}
.glyphicon-backward:before {
  content: "\e071";
}
.glyphicon-play:before {
  content: "\e072";
}
.glyphicon-pause:before {
  content: "\e073";
}
.glyphicon-stop:before {
  content: "\e074";
}
.glyphicon-forward:before {
  content: "\e075";
}
.glyphicon-fast-forward:before {
  content: "\e076";
}
.glyphicon-step-forward:before {
  content: "\e077";
}
.glyphicon-eject:before {
  content: "\e078";
}
.glyphicon-chevron-left:before {
  content: "\e079";
}
.glyphicon-chevron-right:before {
  content: "\e080";
}
.glyphicon-plus-sign:before {
  content: "\e081";
}
.glyphicon-minus-sign:before {
  content: "\e082";
}
.glyphicon-remove-sign:before {
  content: "\e083";
}
.glyphicon-ok-sign:before {
  content: "\e084";
}
.glyphicon-question-sign:before {
  content: "\e085";
}
.glyphicon-info-sign:before {
  content: "\e086";
}
.glyphicon-screenshot:before {
  content: "\e087";
}
.glyphicon-remove-circle:before {
  content: "\e088";
}
.glyphicon-ok-circle:before {
  content: "\e089";
}
.glyphicon-ban-circle:before {
  content: "\e090";
}
.glyphicon-arrow-left:before {
  content: "\e091";
}
.glyphicon-arrow-right:before {
  content: "\e092";
}
.glyphicon-arrow-up:before {
  content: "\e093";
}
.glyphicon-arrow-down:before {
  content: "\e094";
}
.glyphicon-share-alt:before {
  content: "\e095";
}
.glyphicon-resize-full:before {
  content: "\e096";
}
.glyphicon-resize-small:before {
  content: "\e097";
}
.glyphicon-exclamation-sign:before {
  content: "\e101";
}
.glyphicon-gift:before {
  content: "\e102";
}
.glyphicon-leaf:before {
  content: "\e103";
}
.glyphicon-fire:before {
  content: "\e104";
}
.glyphicon-eye-open:before {
  content: "\e105";
}
.glyphicon-eye-close:before {
  content: "\e106";
}
.glyphicon-warning-sign:before {
  content: "\e107";
}
.glyphicon-plane:before {
  content: "\e108";
}
.glyphicon-calendar:before {
  content: "\e109";
}
.glyphicon-random:before {
  content: "\e110";
}
.glyphicon-comment:before {
  content: "\e111";
}
.glyphicon-magnet:before {
  content: "\e112";
}
.glyphicon-chevron-up:before {
  content: "\e113";
}
.glyphicon-chevron-down:before {
  content: "\e114";
}
.glyphicon-retweet:before {
  content: "\e115";
}
.glyphicon-shopping-cart:before {
  content: "\e116";
}
.glyphicon-folder-close:before {
  content: "\e117";
}
.glyphicon-folder-open:before {
  content: "\e118";
}
.glyphicon-resize-vertical:before {
  content: "\e119";
}
.glyphicon-resize-horizontal:before {
  content: "\e120";
}
.glyphicon-hdd:before {
  content: "\e121";
}
.glyphicon-bullhorn:before {
  content: "\e122";
}
.glyphicon-bell:before {
  content: "\e123";
}
.glyphicon-certificate:before {
  content: "\e124";
}
.glyphicon-thumbs-up:before {
  content: "\e125";
}
.glyphicon-thumbs-down:before {
  content: "\e126";
}
.glyphicon-hand-right:before {
  content: "\e127";
}
.glyphicon-hand-left:before {
  content: "\e128";
}
.glyphicon-hand-up:before {
  content: "\e129";
}
.glyphicon-hand-down:before {
  content: "\e130";
}
.glyphicon-circle-arrow-right:before {
  content: "\e131";
}
.glyphicon-circle-arrow-left:before {
  content: "\e132";
}
.glyphicon-circle-arrow-up:before {
  content: "\e133";
}
.glyphicon-circle-arrow-down:before {
  content: "\e134";
}
.glyphicon-globe:before {
  content: "\e135";
}
.glyphicon-wrench:before {
  content: "\e136";
}
.glyphicon-tasks:before {
  content: "\e137";
}
.glyphicon-filter:before {
  content: "\e138";
}
.glyphicon-briefcase:before {
  content: "\e139";
}
.glyphicon-fullscreen:before {
  content: "\e140";
}
.glyphicon-dashboard:before {
  content: "\e141";
}
.glyphicon-paperclip:before {
  content: "\e142";
}
.glyphicon-heart-empty:before {
  content: "\e143";
}
.glyphicon-link:before {
  content: "\e144";
}
.glyphicon-phone:before {
  content: "\e145";
}
.glyphicon-pushpin:before {
  content: "\e146";
}
.glyphicon-usd:before {
  content: "\e148";
}
.glyphicon-gbp:before {
  content: "\e149";
}
.glyphicon-sort:before {
  content: "\e150";
}
.glyphicon-sort-by-alphabet:before {
  content: "\e151";
}
.glyphicon-sort-by-alphabet-alt:before {
  content: "\e152";
}
.glyphicon-sort-by-order:before {
  content: "\e153";
}
.glyphicon-sort-by-order-alt:before {
  content: "\e154";
}
.glyphicon-sort-by-attributes:before {
  content: "\e155";
}
.glyphicon-sort-by-attributes-alt:before {
  content: "\e156";
}
.glyphicon-unchecked:before {
  content: "\e157";
}
.glyphicon-expand:before {
  content: "\e158";
}
.glyphicon-collapse-down:before {
  content: "\e159";
}
.glyphicon-collapse-up:before {
  content: "\e160";
}
.glyphicon-log-in:before {
  content: "\e161";
}
.glyphicon-flash:before {
  content: "\e162";
}
.glyphicon-log-out:before {
  content: "\e163";
}
.glyphicon-new-window:before {
  content: "\e164";
}
.glyphicon-record:before {
  content: "\e165";
}
.glyphicon-save:before {
  content: "\e166";
}
.glyphicon-open:before {
  content: "\e167";
}
.glyphicon-saved:before {
  content: "\e168";
}
.glyphicon-import:before {
  content: "\e169";
}
.glyphicon-export:before {
  content: "\e170";
}
.glyphicon-send:before {
  content: "\e171";
}
.glyphicon-floppy-disk:before {
  content: "\e172";
}
.glyphicon-floppy-saved:before {
  content: "\e173";
}
.glyphicon-floppy-remove:before {
  content: "\e174";
}
.glyphicon-floppy-save:before {
  content: "\e175";
}
.glyphicon-floppy-open:before {
  content: "\e176";
}
.glyphicon-credit-card:before {
  content: "\e177";
}
.glyphicon-transfer:before {
  content: "\e178";
}
.glyphicon-cutlery:before {
  content: "\e179";
}
.glyphicon-header:before {
  content: "\e180";
}
.glyphicon-compressed:before {
  content: "\e181";
}
.glyphicon-earphone:before {
  content: "\e182";
}
.glyphicon-phone-alt:before {
  content: "\e183";
}
.glyphicon-tower:before {
  content: "\e184";
}
.glyphicon-stats:before {
  content: "\e185";
}
.glyphicon-sd-video:before {
  content: "\e186";
}
.glyphicon-hd-video:before {
  content: "\e187";
}
.glyphicon-subtitles:before {
  content: "\e188";
}
.glyphicon-sound-stereo:before {
  content: "\e189";
}
.glyphicon-sound-dolby:before {
  content: "\e190";
}
.glyphicon-sound-5-1:before {
  content: "\e191";
}
.glyphicon-sound-6-1:before {
  content: "\e192";
}
.glyphicon-sound-7-1:before {
  content: "\e193";
}
.glyphicon-copyright-mark:before {
  content: "\e194";
}
.glyphicon-registration-mark:before {
  content: "\e195";
}
.glyphicon-cloud-download:before {
  content: "\e197";
}
.glyphicon-cloud-upload:before {
  content: "\e198";
}
.glyphicon-tree-conifer:before {
  content: "\e199";
}
.glyphicon-tree-deciduous:before {
  content: "\e200";
}
.glyphicon-cd:before {
  content: "\e201";
}
.glyphicon-save-file:before {
  content: "\e202";
}
.glyphicon-open-file:before {
  content: "\e203";
}
.glyphicon-level-up:before {
  content: "\e204";
}
.glyphicon-copy:before {
  content: "\e205";
}
.glyphicon-paste:before {
  content: "\e206";
}
.glyphicon-alert:before {
  content: "\e209";
}
.glyphicon-equalizer:before {
  content: "\e210";
}
.glyphicon-king:before {
  content: "\e211";
}
.glyphicon-queen:before {
  content: "\e212";
}
.glyphicon-pawn:before {
  content: "\e213";
}
.glyphicon-bishop:before {
  content: "\e214";
}
.glyphicon-knight:before {
  content: "\e215";
}
.glyphicon-baby-formula:before {
  content: "\e216";
}
.glyphicon-tent:before {
  content: "\26fa";
}
.glyphicon-blackboard:before {
  content: "\e218";
}
.glyphicon-bed:before {
  content: "\e219";
}
.glyphicon-apple:before {
  content: "\f8ff";
}
.glyphicon-erase:before {
  content: "\e221";
}
.glyphicon-hourglass:before {
  content: "\231b";
}
.glyphicon-lamp:before {
  content: "\e223";
}
.glyphicon-duplicate:before {
  content: "\e224";
}
.glyphicon-piggy-bank:before {
  content: "\e225";
}
.glyphicon-scissors:before {
  content: "\e226";
}
.glyphicon-bitcoin:before {
  content: "\e227";
}
.glyphicon-btc:before {
  content: "\e227";
}
.glyphicon-xbt:before {
  content: "\e227";
}
.glyphicon-yen:before {
  content: "\00a5";
}
.glyphicon-jpy:before {
  content: "\00a5";
}
.glyphicon-ruble:before {
  content: "\20bd";
}
.glyphicon-rub:before {
  content: "\20bd";
}
.glyphicon-scale:before {
  content: "\e230";
}
.glyphicon-ice-lolly:before {
  content: "\e231";
}
.glyphicon-ice-lolly-tasted:before {
  content: "\e232";
}
.glyphicon-education:before {
  content: "\e233";
}
.glyphicon-option-horizontal:before {
  content: "\e234";
}
.glyphicon-option-vertical:before {
  content: "\e235";
}
.glyphicon-menu-hamburger:before {
  content: "\e236";
}
.glyphicon-modal-window:before {
  content: "\e237";
}
.glyphicon-oil:before {
  content: "\e238";
}
.glyphicon-grain:before {
  content: "\e239";
}
.glyphicon-sunglasses:before {
  content: "\e240";
}
.glyphicon-text-size:before {
  content: "\e241";
}
.glyphicon-text-color:before {
  content: "\e242";
}
.glyphicon-text-background:before {
  content: "\e243";
}
.glyphicon-object-align-top:before {
  content: "\e244";
}
.glyphicon-object-align-bottom:before {
  content: "\e245";
}
.glyphicon-object-align-horizontal:before {
  content: "\e246";
}
.glyphicon-object-align-left:before {
  content: "\e247";
}
.glyphicon-object-align-vertical:before {
  content: "\e248";
}
.glyphicon-object-align-right:before {
  content: "\e249";
}
.glyphicon-triangle-right:before {
  content: "\e250";
}
.glyphicon-triangle-left:before {
  content: "\e251";
}
.glyphicon-triangle-bottom:before {
  content: "\e252";
}
.glyphicon-triangle-top:before {
  content: "\e253";
}
.glyphicon-console:before {
  content: "\e254";
}
.glyphicon-superscript:before {
  content: "\e255";
}
.glyphicon-subscript:before {
  content: "\e256";
}
.glyphicon-menu-left:before {
  content: "\e257";
}
.glyphicon-menu-right:before {
  content: "\e258";
}
.glyphicon-menu-down:before {
  content: "\e259";
}
.glyphicon-menu-up:before {
  content: "\e260";
}
* {
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
}
*:before,
*:after {
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
}
html {
  font-size: 10px;
  -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
}
body {
  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
  font-size: 13px;
  line-height: 1.42857143;
  color: #000;
  background-color: #fff;
}
input,
button,
select,
textarea {
  font-family: inherit;
  font-size: inherit;
  line-height: inherit;
}
a {
  color: #337ab7;
  text-decoration: none;
}
a:hover,
a:focus {
  color: #23527c;
  text-decoration: underline;
}
a:focus {
  outline: 5px auto -webkit-focus-ring-color;
  outline-offset: -2px;
}
figure {
  margin: 0;
}
img {
  vertical-align: middle;
}
.img-responsive,
.thumbnail > img,
.thumbnail a > img,
.carousel-inner > .item > img,
.carousel-inner > .item > a > img {
  display: block;
  max-width: 100%;
  height: auto;
}
.img-rounded {
  border-radius: 3px;
}
.img-thumbnail {
  padding: 4px;
  line-height: 1.42857143;
  background-color: #fff;
  border: 1px solid #ddd;
  border-radius: 2px;
  -webkit-transition: all 0.2s ease-in-out;
  -o-transition: all 0.2s ease-in-out;
  transition: all 0.2s ease-in-out;
  display: inline-block;
  max-width: 100%;
  height: auto;
}
.img-circle {
  border-radius: 50%;
}
hr {
  margin-top: 18px;
  margin-bottom: 18px;
  border: 0;
  border-top: 1px solid #eeeeee;
}
.sr-only {
  position: absolute;
  width: 1px;
  height: 1px;
  margin: -1px;
  padding: 0;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  border: 0;
}
.sr-only-focusable:active,
.sr-only-focusable:focus {
  position: static;
  width: auto;
  height: auto;
  margin: 0;
  overflow: visible;
  clip: auto;
}
[role="button"] {
  cursor: pointer;
}
h1,
h2,
h3,
h4,
h5,
h6,
.h1,
.h2,
.h3,
.h4,
.h5,
.h6 {
  font-family: inherit;
  font-weight: 500;
  line-height: 1.1;
  color: inherit;
}
h1 small,
h2 small,
h3 small,
h4 small,
h5 small,
h6 small,
.h1 small,
.h2 small,
.h3 small,
.h4 small,
.h5 small,
.h6 small,
h1 .small,
h2 .small,
h3 .small,
h4 .small,
h5 .small,
h6 .small,
.h1 .small,
.h2 .small,
.h3 .small,
.h4 .small,
.h5 .small,
.h6 .small {
  font-weight: normal;
  line-height: 1;
  color: #777777;
}
h1,
.h1,
h2,
.h2,
h3,
.h3 {
  margin-top: 18px;
  margin-bottom: 9px;
}
h1 small,
.h1 small,
h2 small,
.h2 small,
h3 small,
.h3 small,
h1 .small,
.h1 .small,
h2 .small,
.h2 .small,
h3 .small,
.h3 .small {
  font-size: 65%;
}
h4,
.h4,
h5,
.h5,
h6,
.h6 {
  margin-top: 9px;
  margin-bottom: 9px;
}
h4 small,
.h4 small,
h5 small,
.h5 small,
h6 small,
.h6 small,
h4 .small,
.h4 .small,
h5 .small,
.h5 .small,
h6 .small,
.h6 .small {
  font-size: 75%;
}
h1,
.h1 {
  font-size: 33px;
}
h2,
.h2 {
  font-size: 27px;
}
h3,
.h3 {
  font-size: 23px;
}
h4,
.h4 {
  font-size: 17px;
}
h5,
.h5 {
  font-size: 13px;
}
h6,
.h6 {
  font-size: 12px;
}
p {
  margin: 0 0 9px;
}
.lead {
  margin-bottom: 18px;
  font-size: 14px;
  font-weight: 300;
  line-height: 1.4;
}
@media (min-width: 768px) {
  .lead {
    font-size: 19.5px;
  }
}
small,
.small {
  font-size: 92%;
}
mark,
.mark {
  background-color: #fcf8e3;
  padding: .2em;
}
.text-left {
  text-align: left;
}
.text-right {
  text-align: right;
}
.text-center {
  text-align: center;
}
.text-justify {
  text-align: justify;
}
.text-nowrap {
  white-space: nowrap;
}
.text-lowercase {
  text-transform: lowercase;
}
.text-uppercase {
  text-transform: uppercase;
}
.text-capitalize {
  text-transform: capitalize;
}
.text-muted {
  color: #777777;
}
.text-primary {
  color: #337ab7;
}
a.text-primary:hover,
a.text-primary:focus {
  color: #286090;
}
.text-success {
  color: #3c763d;
}
a.text-success:hover,
a.text-success:focus {
  color: #2b542c;
}
.text-info {
  color: #31708f;
}
a.text-info:hover,
a.text-info:focus {
  color: #245269;
}
.text-warning {
  color: #8a6d3b;
}
a.text-warning:hover,
a.text-warning:focus {
  color: #66512c;
}
.text-danger {
  color: #a94442;
}
a.text-danger:hover,
a.text-danger:focus {
  color: #843534;
}
.bg-primary {
  color: #fff;
  background-color: #337ab7;
}
a.bg-primary:hover,
a.bg-primary:focus {
  background-color: #286090;
}
.bg-success {
  background-color: #dff0d8;
}
a.bg-success:hover,
a.bg-success:focus {
  background-color: #c1e2b3;
}
.bg-info {
  background-color: #d9edf7;
}
a.bg-info:hover,
a.bg-info:focus {
  background-color: #afd9ee;
}
.bg-warning {
  background-color: #fcf8e3;
}
a.bg-warning:hover,
a.bg-warning:focus {
  background-color: #f7ecb5;
}
.bg-danger {
  background-color: #f2dede;
}
a.bg-danger:hover,
a.bg-danger:focus {
  background-color: #e4b9b9;
}
.page-header {
  padding-bottom: 8px;
  margin: 36px 0 18px;
  border-bottom: 1px solid #eeeeee;
}
ul,
ol {
  margin-top: 0;
  margin-bottom: 9px;
}
ul ul,
ol ul,
ul ol,
ol ol {
  margin-bottom: 0;
}
.list-unstyled {
  padding-left: 0;
  list-style: none;
}
.list-inline {
  padding-left: 0;
  list-style: none;
  margin-left: -5px;
}
.list-inline > li {
  display: inline-block;
  padding-left: 5px;
  padding-right: 5px;
}
dl {
  margin-top: 0;
  margin-bottom: 18px;
}
dt,
dd {
  line-height: 1.42857143;
}
dt {
  font-weight: bold;
}
dd {
  margin-left: 0;
}
@media (min-width: 541px) {
  .dl-horizontal dt {
    float: left;
    width: 160px;
    clear: left;
    text-align: right;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
  }
  .dl-horizontal dd {
    margin-left: 180px;
  }
}
abbr[title],
abbr[data-original-title] {
  cursor: help;
  border-bottom: 1px dotted #777777;
}
.initialism {
  font-size: 90%;
  text-transform: uppercase;
}
blockquote {
  padding: 9px 18px;
  margin: 0 0 18px;
  font-size: inherit;
  border-left: 5px solid #eeeeee;
}
blockquote p:last-child,
blockquote ul:last-child,
blockquote ol:last-child {
  margin-bottom: 0;
}
blockquote footer,
blockquote small,
blockquote .small {
  display: block;
  font-size: 80%;
  line-height: 1.42857143;
  color: #777777;
}
blockquote footer:before,
blockquote small:before,
blockquote .small:before {
  content: '\2014 \00A0';
}
.blockquote-reverse,
blockquote.pull-right {
  padding-right: 15px;
  padding-left: 0;
  border-right: 5px solid #eeeeee;
  border-left: 0;
  text-align: right;
}
.blockquote-reverse footer:before,
blockquote.pull-right footer:before,
.blockquote-reverse small:before,
blockquote.pull-right small:before,
.blockquote-reverse .small:before,
blockquote.pull-right .small:before {
  content: '';
}
.blockquote-reverse footer:after,
blockquote.pull-right footer:after,
.blockquote-reverse small:after,
blockquote.pull-right small:after,
.blockquote-reverse .small:after,
blockquote.pull-right .small:after {
  content: '\00A0 \2014';
}
address {
  margin-bottom: 18px;
  font-style: normal;
  line-height: 1.42857143;
}
code,
kbd,
pre,
samp {
  font-family: monospace;
}
code {
  padding: 2px 4px;
  font-size: 90%;
  color: #c7254e;
  background-color: #f9f2f4;
  border-radius: 2px;
}
kbd {
  padding: 2px 4px;
  font-size: 90%;
  color: #888;
  background-color: transparent;
  border-radius: 1px;
  box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.25);
}
kbd kbd {
  padding: 0;
  font-size: 100%;
  font-weight: bold;
  box-shadow: none;
}
pre {
  display: block;
  padding: 8.5px;
  margin: 0 0 9px;
  font-size: 12px;
  line-height: 1.42857143;
  word-break: break-all;
  word-wrap: break-word;
  color: #333333;
  background-color: #f5f5f5;
  border: 1px solid #ccc;
  border-radius: 2px;
}
pre code {
  padding: 0;
  font-size: inherit;
  color: inherit;
  white-space: pre-wrap;
  background-color: transparent;
  border-radius: 0;
}
.pre-scrollable {
  max-height: 340px;
  overflow-y: scroll;
}
.container {
  margin-right: auto;
  margin-left: auto;
  padding-left: 0px;
  padding-right: 0px;
}
@media (min-width: 768px) {
  .container {
    width: 768px;
  }
}
@media (min-width: 992px) {
  .container {
    width: 940px;
  }
}
@media (min-width: 1200px) {
  .container {
    width: 1140px;
  }
}
.container-fluid {
  margin-right: auto;
  margin-left: auto;
  padding-left: 0px;
  padding-right: 0px;
}
.row {
  margin-left: 0px;
  margin-right: 0px;
}
.col-xs-1, .col-sm-1, .col-md-1, .col-lg-1, .col-xs-2, .col-sm-2, .col-md-2, .col-lg-2, .col-xs-3, .col-sm-3, .col-md-3, .col-lg-3, .col-xs-4, .col-sm-4, .col-md-4, .col-lg-4, .col-xs-5, .col-sm-5, .col-md-5, .col-lg-5, .col-xs-6, .col-sm-6, .col-md-6, .col-lg-6, .col-xs-7, .col-sm-7, .col-md-7, .col-lg-7, .col-xs-8, .col-sm-8, .col-md-8, .col-lg-8, .col-xs-9, .col-sm-9, .col-md-9, .col-lg-9, .col-xs-10, .col-sm-10, .col-md-10, .col-lg-10, .col-xs-11, .col-sm-11, .col-md-11, .col-lg-11, .col-xs-12, .col-sm-12, .col-md-12, .col-lg-12 {
  position: relative;
  min-height: 1px;
  padding-left: 0px;
  padding-right: 0px;
}
.col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11, .col-xs-12 {
  float: left;
}
.col-xs-12 {
  width: 100%;
}
.col-xs-11 {
  width: 91.66666667%;
}
.col-xs-10 {
  width: 83.33333333%;
}
.col-xs-9 {
  width: 75%;
}
.col-xs-8 {
  width: 66.66666667%;
}
.col-xs-7 {
  width: 58.33333333%;
}
.col-xs-6 {
  width: 50%;
}
.col-xs-5 {
  width: 41.66666667%;
}
.col-xs-4 {
  width: 33.33333333%;
}
.col-xs-3 {
  width: 25%;
}
.col-xs-2 {
  width: 16.66666667%;
}
.col-xs-1 {
  width: 8.33333333%;
}
.col-xs-pull-12 {
  right: 100%;
}
.col-xs-pull-11 {
  right: 91.66666667%;
}
.col-xs-pull-10 {
  right: 83.33333333%;
}
.col-xs-pull-9 {
  right: 75%;
}
.col-xs-pull-8 {
  right: 66.66666667%;
}
.col-xs-pull-7 {
  right: 58.33333333%;
}
.col-xs-pull-6 {
  right: 50%;
}
.col-xs-pull-5 {
  right: 41.66666667%;
}
.col-xs-pull-4 {
  right: 33.33333333%;
}
.col-xs-pull-3 {
  right: 25%;
}
.col-xs-pull-2 {
  right: 16.66666667%;
}
.col-xs-pull-1 {
  right: 8.33333333%;
}
.col-xs-pull-0 {
  right: auto;
}
.col-xs-push-12 {
  left: 100%;
}
.col-xs-push-11 {
  left: 91.66666667%;
}
.col-xs-push-10 {
  left: 83.33333333%;
}
.col-xs-push-9 {
  left: 75%;
}
.col-xs-push-8 {
  left: 66.66666667%;
}
.col-xs-push-7 {
  left: 58.33333333%;
}
.col-xs-push-6 {
  left: 50%;
}
.col-xs-push-5 {
  left: 41.66666667%;
}
.col-xs-push-4 {
  left: 33.33333333%;
}
.col-xs-push-3 {
  left: 25%;
}
.col-xs-push-2 {
  left: 16.66666667%;
}
.col-xs-push-1 {
  left: 8.33333333%;
}
.col-xs-push-0 {
  left: auto;
}
.col-xs-offset-12 {
  margin-left: 100%;
}
.col-xs-offset-11 {
  margin-left: 91.66666667%;
}
.col-xs-offset-10 {
  margin-left: 83.33333333%;
}
.col-xs-offset-9 {
  margin-left: 75%;
}
.col-xs-offset-8 {
  margin-left: 66.66666667%;
}
.col-xs-offset-7 {
  margin-left: 58.33333333%;
}
.col-xs-offset-6 {
  margin-left: 50%;
}
.col-xs-offset-5 {
  margin-left: 41.66666667%;
}
.col-xs-offset-4 {
  margin-left: 33.33333333%;
}
.col-xs-offset-3 {
  margin-left: 25%;
}
.col-xs-offset-2 {
  margin-left: 16.66666667%;
}
.col-xs-offset-1 {
  margin-left: 8.33333333%;
}
.col-xs-offset-0 {
  margin-left: 0%;
}
@media (min-width: 768px) {
  .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12 {
    float: left;
  }
  .col-sm-12 {
    width: 100%;
  }
  .col-sm-11 {
    width: 91.66666667%;
  }
  .col-sm-10 {
    width: 83.33333333%;
  }
  .col-sm-9 {
    width: 75%;
  }
  .col-sm-8 {
    width: 66.66666667%;
  }
  .col-sm-7 {
    width: 58.33333333%;
  }
  .col-sm-6 {
    width: 50%;
  }
  .col-sm-5 {
    width: 41.66666667%;
  }
  .col-sm-4 {
    width: 33.33333333%;
  }
  .col-sm-3 {
    width: 25%;
  }
  .col-sm-2 {
    width: 16.66666667%;
  }
  .col-sm-1 {
    width: 8.33333333%;
  }
  .col-sm-pull-12 {
    right: 100%;
  }
  .col-sm-pull-11 {
    right: 91.66666667%;
  }
  .col-sm-pull-10 {
    right: 83.33333333%;
  }
  .col-sm-pull-9 {
    right: 75%;
  }
  .col-sm-pull-8 {
    right: 66.66666667%;
  }
  .col-sm-pull-7 {
    right: 58.33333333%;
  }
  .col-sm-pull-6 {
    right: 50%;
  }
  .col-sm-pull-5 {
    right: 41.66666667%;
  }
  .col-sm-pull-4 {
    right: 33.33333333%;
  }
  .col-sm-pull-3 {
    right: 25%;
  }
  .col-sm-pull-2 {
    right: 16.66666667%;
  }
  .col-sm-pull-1 {
    right: 8.33333333%;
  }
  .col-sm-pull-0 {
    right: auto;
  }
  .col-sm-push-12 {
    left: 100%;
  }
  .col-sm-push-11 {
    left: 91.66666667%;
  }
  .col-sm-push-10 {
    left: 83.33333333%;
  }
  .col-sm-push-9 {
    left: 75%;
  }
  .col-sm-push-8 {
    left: 66.66666667%;
  }
  .col-sm-push-7 {
    left: 58.33333333%;
  }
  .col-sm-push-6 {
    left: 50%;
  }
  .col-sm-push-5 {
    left: 41.66666667%;
  }
  .col-sm-push-4 {
    left: 33.33333333%;
  }
  .col-sm-push-3 {
    left: 25%;
  }
  .col-sm-push-2 {
    left: 16.66666667%;
  }
  .col-sm-push-1 {
    left: 8.33333333%;
  }
  .col-sm-push-0 {
    left: auto;
  }
  .col-sm-offset-12 {
    margin-left: 100%;
  }
  .col-sm-offset-11 {
    margin-left: 91.66666667%;
  }
  .col-sm-offset-10 {
    margin-left: 83.33333333%;
  }
  .col-sm-offset-9 {
    margin-left: 75%;
  }
  .col-sm-offset-8 {
    margin-left: 66.66666667%;
  }
  .col-sm-offset-7 {
    margin-left: 58.33333333%;
  }
  .col-sm-offset-6 {
    margin-left: 50%;
  }
  .col-sm-offset-5 {
    margin-left: 41.66666667%;
  }
  .col-sm-offset-4 {
    margin-left: 33.33333333%;
  }
  .col-sm-offset-3 {
    margin-left: 25%;
  }
  .col-sm-offset-2 {
    margin-left: 16.66666667%;
  }
  .col-sm-offset-1 {
    margin-left: 8.33333333%;
  }
  .col-sm-offset-0 {
    margin-left: 0%;
  }
}
@media (min-width: 992px) {
  .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12 {
    float: left;
  }
  .col-md-12 {
    width: 100%;
  }
  .col-md-11 {
    width: 91.66666667%;
  }
  .col-md-10 {
    width: 83.33333333%;
  }
  .col-md-9 {
    width: 75%;
  }
  .col-md-8 {
    width: 66.66666667%;
  }
  .col-md-7 {
    width: 58.33333333%;
  }
  .col-md-6 {
    width: 50%;
  }
  .col-md-5 {
    width: 41.66666667%;
  }
  .col-md-4 {
    width: 33.33333333%;
  }
  .col-md-3 {
    width: 25%;
  }
  .col-md-2 {
    width: 16.66666667%;
  }
  .col-md-1 {
    width: 8.33333333%;
  }
  .col-md-pull-12 {
    right: 100%;
  }
  .col-md-pull-11 {
    right: 91.66666667%;
  }
  .col-md-pull-10 {
    right: 83.33333333%;
  }
  .col-md-pull-9 {
    right: 75%;
  }
  .col-md-pull-8 {
    right: 66.66666667%;
  }
  .col-md-pull-7 {
    right: 58.33333333%;
  }
  .col-md-pull-6 {
    right: 50%;
  }
  .col-md-pull-5 {
    right: 41.66666667%;
  }
  .col-md-pull-4 {
    right: 33.33333333%;
  }
  .col-md-pull-3 {
    right: 25%;
  }
  .col-md-pull-2 {
    right: 16.66666667%;
  }
  .col-md-pull-1 {
    right: 8.33333333%;
  }
  .col-md-pull-0 {
    right: auto;
  }
  .col-md-push-12 {
    left: 100%;
  }
  .col-md-push-11 {
    left: 91.66666667%;
  }
  .col-md-push-10 {
    left: 83.33333333%;
  }
  .col-md-push-9 {
    left: 75%;
  }
  .col-md-push-8 {
    left: 66.66666667%;
  }
  .col-md-push-7 {
    left: 58.33333333%;
  }
  .col-md-push-6 {
    left: 50%;
  }
  .col-md-push-5 {
    left: 41.66666667%;
  }
  .col-md-push-4 {
    left: 33.33333333%;
  }
  .col-md-push-3 {
    left: 25%;
  }
  .col-md-push-2 {
    left: 16.66666667%;
  }
  .col-md-push-1 {
    left: 8.33333333%;
  }
  .col-md-push-0 {
    left: auto;
  }
  .col-md-offset-12 {
    margin-left: 100%;
  }
  .col-md-offset-11 {
    margin-left: 91.66666667%;
  }
  .col-md-offset-10 {
    margin-left: 83.33333333%;
  }
  .col-md-offset-9 {
    margin-left: 75%;
  }
  .col-md-offset-8 {
    margin-left: 66.66666667%;
  }
  .col-md-offset-7 {
    margin-left: 58.33333333%;
  }
  .col-md-offset-6 {
    margin-left: 50%;
  }
  .col-md-offset-5 {
    margin-left: 41.66666667%;
  }
  .col-md-offset-4 {
    margin-left: 33.33333333%;
  }
  .col-md-offset-3 {
    margin-left: 25%;
  }
  .col-md-offset-2 {
    margin-left: 16.66666667%;
  }
  .col-md-offset-1 {
    margin-left: 8.33333333%;
  }
  .col-md-offset-0 {
    margin-left: 0%;
  }
}
@media (min-width: 1200px) {
  .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12 {
    float: left;
  }
  .col-lg-12 {
    width: 100%;
  }
  .col-lg-11 {
    width: 91.66666667%;
  }
  .col-lg-10 {
    width: 83.33333333%;
  }
  .col-lg-9 {
    width: 75%;
  }
  .col-lg-8 {
    width: 66.66666667%;
  }
  .col-lg-7 {
    width: 58.33333333%;
  }
  .col-lg-6 {
    width: 50%;
  }
  .col-lg-5 {
    width: 41.66666667%;
  }
  .col-lg-4 {
    width: 33.33333333%;
  }
  .col-lg-3 {
    width: 25%;
  }
  .col-lg-2 {
    width: 16.66666667%;
  }
  .col-lg-1 {
    width: 8.33333333%;
  }
  .col-lg-pull-12 {
    right: 100%;
  }
  .col-lg-pull-11 {
    right: 91.66666667%;
  }
  .col-lg-pull-10 {
    right: 83.33333333%;
  }
  .col-lg-pull-9 {
    right: 75%;
  }
  .col-lg-pull-8 {
    right: 66.66666667%;
  }
  .col-lg-pull-7 {
    right: 58.33333333%;
  }
  .col-lg-pull-6 {
    right: 50%;
  }
  .col-lg-pull-5 {
    right: 41.66666667%;
  }
  .col-lg-pull-4 {
    right: 33.33333333%;
  }
  .col-lg-pull-3 {
    right: 25%;
  }
  .col-lg-pull-2 {
    right: 16.66666667%;
  }
  .col-lg-pull-1 {
    right: 8.33333333%;
  }
  .col-lg-pull-0 {
    right: auto;
  }
  .col-lg-push-12 {
    left: 100%;
  }
  .col-lg-push-11 {
    left: 91.66666667%;
  }
  .col-lg-push-10 {
    left: 83.33333333%;
  }
  .col-lg-push-9 {
    left: 75%;
  }
  .col-lg-push-8 {
    left: 66.66666667%;
  }
  .col-lg-push-7 {
    left: 58.33333333%;
  }
  .col-lg-push-6 {
    left: 50%;
  }
  .col-lg-push-5 {
    left: 41.66666667%;
  }
  .col-lg-push-4 {
    left: 33.33333333%;
  }
  .col-lg-push-3 {
    left: 25%;
  }
  .col-lg-push-2 {
    left: 16.66666667%;
  }
  .col-lg-push-1 {
    left: 8.33333333%;
  }
  .col-lg-push-0 {
    left: auto;
  }
  .col-lg-offset-12 {
    margin-left: 100%;
  }
  .col-lg-offset-11 {
    margin-left: 91.66666667%;
  }
  .col-lg-offset-10 {
    margin-left: 83.33333333%;
  }
  .col-lg-offset-9 {
    margin-left: 75%;
  }
  .col-lg-offset-8 {
    margin-left: 66.66666667%;
  }
  .col-lg-offset-7 {
    margin-left: 58.33333333%;
  }
  .col-lg-offset-6 {
    margin-left: 50%;
  }
  .col-lg-offset-5 {
    margin-left: 41.66666667%;
  }
  .col-lg-offset-4 {
    margin-left: 33.33333333%;
  }
  .col-lg-offset-3 {
    margin-left: 25%;
  }
  .col-lg-offset-2 {
    margin-left: 16.66666667%;
  }
  .col-lg-offset-1 {
    margin-left: 8.33333333%;
  }
  .col-lg-offset-0 {
    margin-left: 0%;
  }
}
table {
  background-color: transparent;
}
caption {
  padding-top: 8px;
  padding-bottom: 8px;
  color: #777777;
  text-align: left;
}
th {
  text-align: left;
}
.table {
  width: 100%;
  max-width: 100%;
  margin-bottom: 18px;
}
.table > thead > tr > th,
.table > tbody > tr > th,
.table > tfoot > tr > th,
.table > thead > tr > td,
.table > tbody > tr > td,
.table > tfoot > tr > td {
  padding: 8px;
  line-height: 1.42857143;
  vertical-align: top;
  border-top: 1px solid #ddd;
}
.table > thead > tr > th {
  vertical-align: bottom;
  border-bottom: 2px solid #ddd;
}
.table > caption + thead > tr:first-child > th,
.table > colgroup + thead > tr:first-child > th,
.table > thead:first-child > tr:first-child > th,
.table > caption + thead > tr:first-child > td,
.table > colgroup + thead > tr:first-child > td,
.table > thead:first-child > tr:first-child > td {
  border-top: 0;
}
.table > tbody + tbody {
  border-top: 2px solid #ddd;
}
.table .table {
  background-color: #fff;
}
.table-condensed > thead > tr > th,
.table-condensed > tbody > tr > th,
.table-condensed > tfoot > tr > th,
.table-condensed > thead > tr > td,
.table-condensed > tbody > tr > td,
.table-condensed > tfoot > tr > td {
  padding: 5px;
}
.table-bordered {
  border: 1px solid #ddd;
}
.table-bordered > thead > tr > th,
.table-bordered > tbody > tr > th,
.table-bordered > tfoot > tr > th,
.table-bordered > thead > tr > td,
.table-bordered > tbody > tr > td,
.table-bordered > tfoot > tr > td {
  border: 1px solid #ddd;
}
.table-bordered > thead > tr > th,
.table-bordered > thead > tr > td {
  border-bottom-width: 2px;
}
.table-striped > tbody > tr:nth-of-type(odd) {
  background-color: #f9f9f9;
}
.table-hover > tbody > tr:hover {
  background-color: #f5f5f5;
}
table col[class*="col-"] {
  position: static;
  float: none;
  display: table-column;
}
table td[class*="col-"],
table th[class*="col-"] {
  position: static;
  float: none;
  display: table-cell;
}
.table > thead > tr > td.active,
.table > tbody > tr > td.active,
.table > tfoot > tr > td.active,
.table > thead > tr > th.active,
.table > tbody > tr > th.active,
.table > tfoot > tr > th.active,
.table > thead > tr.active > td,
.table > tbody > tr.active > td,
.table > tfoot > tr.active > td,
.table > thead > tr.active > th,
.table > tbody > tr.active > th,
.table > tfoot > tr.active > th {
  background-color: #f5f5f5;
}
.table-hover > tbody > tr > td.active:hover,
.table-hover > tbody > tr > th.active:hover,
.table-hover > tbody > tr.active:hover > td,
.table-hover > tbody > tr:hover > .active,
.table-hover > tbody > tr.active:hover > th {
  background-color: #e8e8e8;
}
.table > thead > tr > td.success,
.table > tbody > tr > td.success,
.table > tfoot > tr > td.success,
.table > thead > tr > th.success,
.table > tbody > tr > th.success,
.table > tfoot > tr > th.success,
.table > thead > tr.success > td,
.table > tbody > tr.success > td,
.table > tfoot > tr.success > td,
.table > thead > tr.success > th,
.table > tbody > tr.success > th,
.table > tfoot > tr.success > th {
  background-color: #dff0d8;
}
.table-hover > tbody > tr > td.success:hover,
.table-hover > tbody > tr > th.success:hover,
.table-hover > tbody > tr.success:hover > td,
.table-hover > tbody > tr:hover > .success,
.table-hover > tbody > tr.success:hover > th {
  background-color: #d0e9c6;
}
.table > thead > tr > td.info,
.table > tbody > tr > td.info,
.table > tfoot > tr > td.info,
.table > thead > tr > th.info,
.table > tbody > tr > th.info,
.table > tfoot > tr > th.info,
.table > thead > tr.info > td,
.table > tbody > tr.info > td,
.table > tfoot > tr.info > td,
.table > thead > tr.info > th,
.table > tbody > tr.info > th,
.table > tfoot > tr.info > th {
  background-color: #d9edf7;
}
.table-hover > tbody > tr > td.info:hover,
.table-hover > tbody > tr > th.info:hover,
.table-hover > tbody > tr.info:hover > td,
.table-hover > tbody > tr:hover > .info,
.table-hover > tbody > tr.info:hover > th {
  background-color: #c4e3f3;
}
.table > thead > tr > td.warning,
.table > tbody > tr > td.warning,
.table > tfoot > tr > td.warning,
.table > thead > tr > th.warning,
.table > tbody > tr > th.warning,
.table > tfoot > tr > th.warning,
.table > thead > tr.warning > td,
.table > tbody > tr.warning > td,
.table > tfoot > tr.warning > td,
.table > thead > tr.warning > th,
.table > tbody > tr.warning > th,
.table > tfoot > tr.warning > th {
  background-color: #fcf8e3;
}
.table-hover > tbody > tr > td.warning:hover,
.table-hover > tbody > tr > th.warning:hover,
.table-hover > tbody > tr.warning:hover > td,
.table-hover > tbody > tr:hover > .warning,
.table-hover > tbody > tr.warning:hover > th {
  background-color: #faf2cc;
}
.table > thead > tr > td.danger,
.table > tbody > tr > td.danger,
.table > tfoot > tr > td.danger,
.table > thead > tr > th.danger,
.table > tbody > tr > th.danger,
.table > tfoot > tr > th.danger,
.table > thead > tr.danger > td,
.table > tbody > tr.danger > td,
.table > tfoot > tr.danger > td,
.table > thead > tr.danger > th,
.table > tbody > tr.danger > th,
.table > tfoot > tr.danger > th {
  background-color: #f2dede;
}
.table-hover > tbody > tr > td.danger:hover,
.table-hover > tbody > tr > th.danger:hover,
.table-hover > tbody > tr.danger:hover > td,
.table-hover > tbody > tr:hover > .danger,
.table-hover > tbody > tr.danger:hover > th {
  background-color: #ebcccc;
}
.table-responsive {
  overflow-x: auto;
  min-height: 0.01%;
}
@media screen and (max-width: 767px) {
  .table-responsive {
    width: 100%;
    margin-bottom: 13.5px;
    overflow-y: hidden;
    -ms-overflow-style: -ms-autohiding-scrollbar;
    border: 1px solid #ddd;
  }
  .table-responsive > .table {
    margin-bottom: 0;
  }
  .table-responsive > .table > thead > tr > th,
  .table-responsive > .table > tbody > tr > th,
  .table-responsive > .table > tfoot > tr > th,
  .table-responsive > .table > thead > tr > td,
  .table-responsive > .table > tbody > tr > td,
  .table-responsive > .table > tfoot > tr > td {
    white-space: nowrap;
  }
  .table-responsive > .table-bordered {
    border: 0;
  }
  .table-responsive > .table-bordered > thead > tr > th:first-child,
  .table-responsive > .table-bordered > tbody > tr > th:first-child,
  .table-responsive > .table-bordered > tfoot > tr > th:first-child,
  .table-responsive > .table-bordered > thead > tr > td:first-child,
  .table-responsive > .table-bordered > tbody > tr > td:first-child,
  .table-responsive > .table-bordered > tfoot > tr > td:first-child {
    border-left: 0;
  }
  .table-responsive > .table-bordered > thead > tr > th:last-child,
  .table-responsive > .table-bordered > tbody > tr > th:last-child,
  .table-responsive > .table-bordered > tfoot > tr > th:last-child,
  .table-responsive > .table-bordered > thead > tr > td:last-child,
  .table-responsive > .table-bordered > tbody > tr > td:last-child,
  .table-responsive > .table-bordered > tfoot > tr > td:last-child {
    border-right: 0;
  }
  .table-responsive > .table-bordered > tbody > tr:last-child > th,
  .table-responsive > .table-bordered > tfoot > tr:last-child > th,
  .table-responsive > .table-bordered > tbody > tr:last-child > td,
  .table-responsive > .table-bordered > tfoot > tr:last-child > td {
    border-bottom: 0;
  }
}
fieldset {
  padding: 0;
  margin: 0;
  border: 0;
  min-width: 0;
}
legend {
  display: block;
  width: 100%;
  padding: 0;
  margin-bottom: 18px;
  font-size: 19.5px;
  line-height: inherit;
  color: #333333;
  border: 0;
  border-bottom: 1px solid #e5e5e5;
}
label {
  display: inline-block;
  max-width: 100%;
  margin-bottom: 5px;
  font-weight: bold;
}
input[type="search"] {
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
}
input[type="radio"],
input[type="checkbox"] {
  margin: 4px 0 0;
  margin-top: 1px \9;
  line-height: normal;
}
input[type="file"] {
  display: block;
}
input[type="range"] {
  display: block;
  width: 100%;
}
select[multiple],
select[size] {
  height: auto;
}
input[type="file"]:focus,
input[type="radio"]:focus,
input[type="checkbox"]:focus {
  outline: 5px auto -webkit-focus-ring-color;
  outline-offset: -2px;
}
output {
  display: block;
  padding-top: 7px;
  font-size: 13px;
  line-height: 1.42857143;
  color: #555555;
}
.form-control {
  display: block;
  width: 100%;
  height: 32px;
  padding: 6px 12px;
  font-size: 13px;
  line-height: 1.42857143;
  color: #555555;
  background-color: #fff;
  background-image: none;
  border: 1px solid #ccc;
  border-radius: 2px;
  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
  -webkit-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
  -o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
  transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
}
.form-control:focus {
  border-color: #66afe9;
  outline: 0;
  -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);
  box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);
}
.form-control::-moz-placeholder {
  color: #999;
  opacity: 1;
}
.form-control:-ms-input-placeholder {
  color: #999;
}
.form-control::-webkit-input-placeholder {
  color: #999;
}
.form-control::-ms-expand {
  border: 0;
  background-color: transparent;
}
.form-control[disabled],
.form-control[readonly],
fieldset[disabled] .form-control {
  background-color: #eeeeee;
  opacity: 1;
}
.form-control[disabled],
fieldset[disabled] .form-control {
  cursor: not-allowed;
}
textarea.form-control {
  height: auto;
}
input[type="search"] {
  -webkit-appearance: none;
}
@media screen and (-webkit-min-device-pixel-ratio: 0) {
  input[type="date"].form-control,
  input[type="time"].form-control,
  input[type="datetime-local"].form-control,
  input[type="month"].form-control {
    line-height: 32px;
  }
  input[type="date"].input-sm,
  input[type="time"].input-sm,
  input[type="datetime-local"].input-sm,
  input[type="month"].input-sm,
  .input-group-sm input[type="date"],
  .input-group-sm input[type="time"],
  .input-group-sm input[type="datetime-local"],
  .input-group-sm input[type="month"] {
    line-height: 30px;
  }
  input[type="date"].input-lg,
  input[type="time"].input-lg,
  input[type="datetime-local"].input-lg,
  input[type="month"].input-lg,
  .input-group-lg input[type="date"],
  .input-group-lg input[type="time"],
  .input-group-lg input[type="datetime-local"],
  .input-group-lg input[type="month"] {
    line-height: 45px;
  }
}
.form-group {
  margin-bottom: 15px;
}
.radio,
.checkbox {
  position: relative;
  display: block;
  margin-top: 10px;
  margin-bottom: 10px;
}
.radio label,
.checkbox label {
  min-height: 18px;
  padding-left: 20px;
  margin-bottom: 0;
  font-weight: normal;
  cursor: pointer;
}
.radio input[type="radio"],
.radio-inline input[type="radio"],
.checkbox input[type="checkbox"],
.checkbox-inline input[type="checkbox"] {
  position: absolute;
  margin-left: -20px;
  margin-top: 4px \9;
}
.radio + .radio,
.checkbox + .checkbox {
  margin-top: -5px;
}
.radio-inline,
.checkbox-inline {
  position: relative;
  display: inline-block;
  padding-left: 20px;
  margin-bottom: 0;
  vertical-align: middle;
  font-weight: normal;
  cursor: pointer;
}
.radio-inline + .radio-inline,
.checkbox-inline + .checkbox-inline {
  margin-top: 0;
  margin-left: 10px;
}
input[type="radio"][disabled],
input[type="checkbox"][disabled],
input[type="radio"].disabled,
input[type="checkbox"].disabled,
fieldset[disabled] input[type="radio"],
fieldset[disabled] input[type="checkbox"] {
  cursor: not-allowed;
}
.radio-inline.disabled,
.checkbox-inline.disabled,
fieldset[disabled] .radio-inline,
fieldset[disabled] .checkbox-inline {
  cursor: not-allowed;
}
.radio.disabled label,
.checkbox.disabled label,
fieldset[disabled] .radio label,
fieldset[disabled] .checkbox label {
  cursor: not-allowed;
}
.form-control-static {
  padding-top: 7px;
  padding-bottom: 7px;
  margin-bottom: 0;
  min-height: 31px;
}
.form-control-static.input-lg,
.form-control-static.input-sm {
  padding-left: 0;
  padding-right: 0;
}
.input-sm {
  height: 30px;
  padding: 5px 10px;
  font-size: 12px;
  line-height: 1.5;
  border-radius: 1px;
}
select.input-sm {
  height: 30px;
  line-height: 30px;
}
textarea.input-sm,
select[multiple].input-sm {
  height: auto;
}
.form-group-sm .form-control {
  height: 30px;
  padding: 5px 10px;
  font-size: 12px;
  line-height: 1.5;
  border-radius: 1px;
}
.form-group-sm select.form-control {
  height: 30px;
  line-height: 30px;
}
.form-group-sm textarea.form-control,
.form-group-sm select[multiple].form-control {
  height: auto;
}
.form-group-sm .form-control-static {
  height: 30px;
  min-height: 30px;
  padding: 6px 10px;
  font-size: 12px;
  line-height: 1.5;
}
.input-lg {
  height: 45px;
  padding: 10px 16px;
  font-size: 17px;
  line-height: 1.3333333;
  border-radius: 3px;
}
select.input-lg {
  height: 45px;
  line-height: 45px;
}
textarea.input-lg,
select[multiple].input-lg {
  height: auto;
}
.form-group-lg .form-control {
  height: 45px;
  padding: 10px 16px;
  font-size: 17px;
  line-height: 1.3333333;
  border-radius: 3px;
}
.form-group-lg select.form-control {
  height: 45px;
  line-height: 45px;
}
.form-group-lg textarea.form-control,
.form-group-lg select[multiple].form-control {
  height: auto;
}
.form-group-lg .form-control-static {
  height: 45px;
  min-height: 35px;
  padding: 11px 16px;
  font-size: 17px;
  line-height: 1.3333333;
}
.has-feedback {
  position: relative;
}
.has-feedback .form-control {
  padding-right: 40px;
}
.form-control-feedback {
  position: absolute;
  top: 0;
  right: 0;
  z-index: 2;
  display: block;
  width: 32px;
  height: 32px;
  line-height: 32px;
  text-align: center;
  pointer-events: none;
}
.input-lg + .form-control-feedback,
.input-group-lg + .form-control-feedback,
.form-group-lg .form-control + .form-control-feedback {
  width: 45px;
  height: 45px;
  line-height: 45px;
}
.input-sm + .form-control-feedback,
.input-group-sm + .form-control-feedback,
.form-group-sm .form-control + .form-control-feedback {
  width: 30px;
  height: 30px;
  line-height: 30px;
}
.has-success .help-block,
.has-success .control-label,
.has-success .radio,
.has-success .checkbox,
.has-success .radio-inline,
.has-success .checkbox-inline,
.has-success.radio label,
.has-success.checkbox label,
.has-success.radio-inline label,
.has-success.checkbox-inline label {
  color: #3c763d;
}
.has-success .form-control {
  border-color: #3c763d;
  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
}
.has-success .form-control:focus {
  border-color: #2b542c;
  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168;
  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168;
}
.has-success .input-group-addon {
  color: #3c763d;
  border-color: #3c763d;
  background-color: #dff0d8;
}
.has-success .form-control-feedback {
  color: #3c763d;
}
.has-warning .help-block,
.has-warning .control-label,
.has-warning .radio,
.has-warning .checkbox,
.has-warning .radio-inline,
.has-warning .checkbox-inline,
.has-warning.radio label,
.has-warning.checkbox label,
.has-warning.radio-inline label,
.has-warning.checkbox-inline label {
  color: #8a6d3b;
}
.has-warning .form-control {
  border-color: #8a6d3b;
  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
}
.has-warning .form-control:focus {
  border-color: #66512c;
  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b;
  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b;
}
.has-warning .input-group-addon {
  color: #8a6d3b;
  border-color: #8a6d3b;
  background-color: #fcf8e3;
}
.has-warning .form-control-feedback {
  color: #8a6d3b;
}
.has-error .help-block,
.has-error .control-label,
.has-error .radio,
.has-error .checkbox,
.has-error .radio-inline,
.has-error .checkbox-inline,
.has-error.radio label,
.has-error.checkbox label,
.has-error.radio-inline label,
.has-error.checkbox-inline label {
  color: #a94442;
}
.has-error .form-control {
  border-color: #a94442;
  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
}
.has-error .form-control:focus {
  border-color: #843534;
  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483;
  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483;
}
.has-error .input-group-addon {
  color: #a94442;
  border-color: #a94442;
  background-color: #f2dede;
}
.has-error .form-control-feedback {
  color: #a94442;
}
.has-feedback label ~ .form-control-feedback {
  top: 23px;
}
.has-feedback label.sr-only ~ .form-control-feedback {
  top: 0;
}
.help-block {
  display: block;
  margin-top: 5px;
  margin-bottom: 10px;
  color: #404040;
}
@media (min-width: 768px) {
  .form-inline .form-group {
    display: inline-block;
    margin-bottom: 0;
    vertical-align: middle;
  }
  .form-inline .form-control {
    display: inline-block;
    width: auto;
    vertical-align: middle;
  }
  .form-inline .form-control-static {
    display: inline-block;
  }
  .form-inline .input-group {
    display: inline-table;
    vertical-align: middle;
  }
  .form-inline .input-group .input-group-addon,
  .form-inline .input-group .input-group-btn,
  .form-inline .input-group .form-control {
    width: auto;
  }
  .form-inline .input-group > .form-control {
    width: 100%;
  }
  .form-inline .control-label {
    margin-bottom: 0;
    vertical-align: middle;
  }
  .form-inline .radio,
  .form-inline .checkbox {
    display: inline-block;
    margin-top: 0;
    margin-bottom: 0;
    vertical-align: middle;
  }
  .form-inline .radio label,
  .form-inline .checkbox label {
    padding-left: 0;
  }
  .form-inline .radio input[type="radio"],
  .form-inline .checkbox input[type="checkbox"] {
    position: relative;
    margin-left: 0;
  }
  .form-inline .has-feedback .form-control-feedback {
    top: 0;
  }
}
.form-horizontal .radio,
.form-horizontal .checkbox,
.form-horizontal .radio-inline,
.form-horizontal .checkbox-inline {
  margin-top: 0;
  margin-bottom: 0;
  padding-top: 7px;
}
.form-horizontal .radio,
.form-horizontal .checkbox {
  min-height: 25px;
}
.form-horizontal .form-group {
  margin-left: 0px;
  margin-right: 0px;
}
@media (min-width: 768px) {
  .form-horizontal .control-label {
    text-align: right;
    margin-bottom: 0;
    padding-top: 7px;
  }
}
.form-horizontal .has-feedback .form-control-feedback {
  right: 0px;
}
@media (min-width: 768px) {
  .form-horizontal .form-group-lg .control-label {
    padding-top: 11px;
    font-size: 17px;
  }
}
@media (min-width: 768px) {
  .form-horizontal .form-group-sm .control-label {
    padding-top: 6px;
    font-size: 12px;
  }
}
.btn {
  display: inline-block;
  margin-bottom: 0;
  font-weight: normal;
  text-align: center;
  vertical-align: middle;
  touch-action: manipulation;
  cursor: pointer;
  background-image: none;
  border: 1px solid transparent;
  white-space: nowrap;
  padding: 6px 12px;
  font-size: 13px;
  line-height: 1.42857143;
  border-radius: 2px;
  -webkit-user-select: none;
  -moz-user-select: none;
  -ms-user-select: none;
  user-select: none;
}
.btn:focus,
.btn:active:focus,
.btn.active:focus,
.btn.focus,
.btn:active.focus,
.btn.active.focus {
  outline: 5px auto -webkit-focus-ring-color;
  outline-offset: -2px;
}
.btn:hover,
.btn:focus,
.btn.focus {
  color: #333;
  text-decoration: none;
}
.btn:active,
.btn.active {
  outline: 0;
  background-image: none;
  -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
  box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
}
.btn.disabled,
.btn[disabled],
fieldset[disabled] .btn {
  cursor: not-allowed;
  opacity: 0.65;
  filter: alpha(opacity=65);
  -webkit-box-shadow: none;
  box-shadow: none;
}
a.btn.disabled,
fieldset[disabled] a.btn {
  pointer-events: none;
}
.btn-default {
  color: #333;
  background-color: #fff;
  border-color: #ccc;
}
.btn-default:focus,
.btn-default.focus {
  color: #333;
  background-color: #e6e6e6;
  border-color: #8c8c8c;
}
.btn-default:hover {
  color: #333;
  background-color: #e6e6e6;
  border-color: #adadad;
}
.btn-default:active,
.btn-default.active,
.open > .dropdown-toggle.btn-default {
  color: #333;
  background-color: #e6e6e6;
  border-color: #adadad;
}
.btn-default:active:hover,
.btn-default.active:hover,
.open > .dropdown-toggle.btn-default:hover,
.btn-default:active:focus,
.btn-default.active:focus,
.open > .dropdown-toggle.btn-default:focus,
.btn-default:active.focus,
.btn-default.active.focus,
.open > .dropdown-toggle.btn-default.focus {
  color: #333;
  background-color: #d4d4d4;
  border-color: #8c8c8c;
}
.btn-default:active,
.btn-default.active,
.open > .dropdown-toggle.btn-default {
  background-image: none;
}
.btn-default.disabled:hover,
.btn-default[disabled]:hover,
fieldset[disabled] .btn-default:hover,
.btn-default.disabled:focus,
.btn-default[disabled]:focus,
fieldset[disabled] .btn-default:focus,
.btn-default.disabled.focus,
.btn-default[disabled].focus,
fieldset[disabled] .btn-default.focus {
  background-color: #fff;
  border-color: #ccc;
}
.btn-default .badge {
  color: #fff;
  background-color: #333;
}
.btn-primary {
  color: #fff;
  background-color: #337ab7;
  border-color: #2e6da4;
}
.btn-primary:focus,
.btn-primary.focus {
  color: #fff;
  background-color: #286090;
  border-color: #122b40;
}
.btn-primary:hover {
  color: #fff;
  background-color: #286090;
  border-color: #204d74;
}
.btn-primary:active,
.btn-primary.active,
.open > .dropdown-toggle.btn-primary {
  color: #fff;
  background-color: #286090;
  border-color: #204d74;
}
.btn-primary:active:hover,
.btn-primary.active:hover,
.open > .dropdown-toggle.btn-primary:hover,
.btn-primary:active:focus,
.btn-primary.active:focus,
.open > .dropdown-toggle.btn-primary:focus,
.btn-primary:active.focus,
.btn-primary.active.focus,
.open > .dropdown-toggle.btn-primary.focus {
  color: #fff;
  background-color: #204d74;
  border-color: #122b40;
}
.btn-primary:active,
.btn-primary.active,
.open > .dropdown-toggle.btn-primary {
  background-image: none;
}
.btn-primary.disabled:hover,
.btn-primary[disabled]:hover,
fieldset[disabled] .btn-primary:hover,
.btn-primary.disabled:focus,
.btn-primary[disabled]:focus,
fieldset[disabled] .btn-primary:focus,
.btn-primary.disabled.focus,
.btn-primary[disabled].focus,
fieldset[disabled] .btn-primary.focus {
  background-color: #337ab7;
  border-color: #2e6da4;
}
.btn-primary .badge {
  color: #337ab7;
  background-color: #fff;
}
.btn-success {
  color: #fff;
  background-color: #5cb85c;
  border-color: #4cae4c;
}
.btn-success:focus,
.btn-success.focus {
  color: #fff;
  background-color: #449d44;
  border-color: #255625;
}
.btn-success:hover {
  color: #fff;
  background-color: #449d44;
  border-color: #398439;
}
.btn-success:active,
.btn-success.active,
.open > .dropdown-toggle.btn-success {
  color: #fff;
  background-color: #449d44;
  border-color: #398439;
}
.btn-success:active:hover,
.btn-success.active:hover,
.open > .dropdown-toggle.btn-success:hover,
.btn-success:active:focus,
.btn-success.active:focus,
.open > .dropdown-toggle.btn-success:focus,
.btn-success:active.focus,
.btn-success.active.focus,
.open > .dropdown-toggle.btn-success.focus {
  color: #fff;
  background-color: #398439;
  border-color: #255625;
}
.btn-success:active,
.btn-success.active,
.open > .dropdown-toggle.btn-success {
  background-image: none;
}
.btn-success.disabled:hover,
.btn-success[disabled]:hover,
fieldset[disabled] .btn-success:hover,
.btn-success.disabled:focus,
.btn-success[disabled]:focus,
fieldset[disabled] .btn-success:focus,
.btn-success.disabled.focus,
.btn-success[disabled].focus,
fieldset[disabled] .btn-success.focus {
  background-color: #5cb85c;
  border-color: #4cae4c;
}
.btn-success .badge {
  color: #5cb85c;
  background-color: #fff;
}
.btn-info {
  color: #fff;
  background-color: #5bc0de;
  border-color: #46b8da;
}
.btn-info:focus,
.btn-info.focus {
  color: #fff;
  background-color: #31b0d5;
  border-color: #1b6d85;
}
.btn-info:hover {
  color: #fff;
  background-color: #31b0d5;
  border-color: #269abc;
}
.btn-info:active,
.btn-info.active,
.open > .dropdown-toggle.btn-info {
  color: #fff;
  background-color: #31b0d5;
  border-color: #269abc;
}
.btn-info:active:hover,
.btn-info.active:hover,
.open > .dropdown-toggle.btn-info:hover,
.btn-info:active:focus,
.btn-info.active:focus,
.open > .dropdown-toggle.btn-info:focus,
.btn-info:active.focus,
.btn-info.active.focus,
.open > .dropdown-toggle.btn-info.focus {
  color: #fff;
  background-color: #269abc;
  border-color: #1b6d85;
}
.btn-info:active,
.btn-info.active,
.open > .dropdown-toggle.btn-info {
  background-image: none;
}
.btn-info.disabled:hover,
.btn-info[disabled]:hover,
fieldset[disabled] .btn-info:hover,
.btn-info.disabled:focus,
.btn-info[disabled]:focus,
fieldset[disabled] .btn-info:focus,
.btn-info.disabled.focus,
.btn-info[disabled].focus,
fieldset[disabled] .btn-info.focus {
  background-color: #5bc0de;
  border-color: #46b8da;
}
.btn-info .badge {
  color: #5bc0de;
  background-color: #fff;
}
.btn-warning {
  color: #fff;
  background-color: #f0ad4e;
  border-color: #eea236;
}
.btn-warning:focus,
.btn-warning.focus {
  color: #fff;
  background-color: #ec971f;
  border-color: #985f0d;
}
.btn-warning:hover {
  color: #fff;
  background-color: #ec971f;
  border-color: #d58512;
}
.btn-warning:active,
.btn-warning.active,
.open > .dropdown-toggle.btn-warning {
  color: #fff;
  background-color: #ec971f;
  border-color: #d58512;
}
.btn-warning:active:hover,
.btn-warning.active:hover,
.open > .dropdown-toggle.btn-warning:hover,
.btn-warning:active:focus,
.btn-warning.active:focus,
.open > .dropdown-toggle.btn-warning:focus,
.btn-warning:active.focus,
.btn-warning.active.focus,
.open > .dropdown-toggle.btn-warning.focus {
  color: #fff;
  background-color: #d58512;
  border-color: #985f0d;
}
.btn-warning:active,
.btn-warning.active,
.open > .dropdown-toggle.btn-warning {
  background-image: none;
}
.btn-warning.disabled:hover,
.btn-warning[disabled]:hover,
fieldset[disabled] .btn-warning:hover,
.btn-warning.disabled:focus,
.btn-warning[disabled]:focus,
fieldset[disabled] .btn-warning:focus,
.btn-warning.disabled.focus,
.btn-warning[disabled].focus,
fieldset[disabled] .btn-warning.focus {
  background-color: #f0ad4e;
  border-color: #eea236;
}
.btn-warning .badge {
  color: #f0ad4e;
  background-color: #fff;
}
.btn-danger {
  color: #fff;
  background-color: #d9534f;
  border-color: #d43f3a;
}
.btn-danger:focus,
.btn-danger.focus {
  color: #fff;
  background-color: #c9302c;
  border-color: #761c19;
}
.btn-danger:hover {
  color: #fff;
  background-color: #c9302c;
  border-color: #ac2925;
}
.btn-danger:active,
.btn-danger.active,
.open > .dropdown-toggle.btn-danger {
  color: #fff;
  background-color: #c9302c;
  border-color: #ac2925;
}
.btn-danger:active:hover,
.btn-danger.active:hover,
.open > .dropdown-toggle.btn-danger:hover,
.btn-danger:active:focus,
.btn-danger.active:focus,
.open > .dropdown-toggle.btn-danger:focus,
.btn-danger:active.focus,
.btn-danger.active.focus,
.open > .dropdown-toggle.btn-danger.focus {
  color: #fff;
  background-color: #ac2925;
  border-color: #761c19;
}
.btn-danger:active,
.btn-danger.active,
.open > .dropdown-toggle.btn-danger {
  background-image: none;
}
.btn-danger.disabled:hover,
.btn-danger[disabled]:hover,
fieldset[disabled] .btn-danger:hover,
.btn-danger.disabled:focus,
.btn-danger[disabled]:focus,
fieldset[disabled] .btn-danger:focus,
.btn-danger.disabled.focus,
.btn-danger[disabled].focus,
fieldset[disabled] .btn-danger.focus {
  background-color: #d9534f;
  border-color: #d43f3a;
}
.btn-danger .badge {
  color: #d9534f;
  background-color: #fff;
}
.btn-link {
  color: #337ab7;
  font-weight: normal;
  border-radius: 0;
}
.btn-link,
.btn-link:active,
.btn-link.active,
.btn-link[disabled],
fieldset[disabled] .btn-link {
  background-color: transparent;
  -webkit-box-shadow: none;
  box-shadow: none;
}
.btn-link,
.btn-link:hover,
.btn-link:focus,
.btn-link:active {
  border-color: transparent;
}
.btn-link:hover,
.btn-link:focus {
  color: #23527c;
  text-decoration: underline;
  background-color: transparent;
}
.btn-link[disabled]:hover,
fieldset[disabled] .btn-link:hover,
.btn-link[disabled]:focus,
fieldset[disabled] .btn-link:focus {
  color: #777777;
  text-decoration: none;
}
.btn-lg,
.btn-group-lg > .btn {
  padding: 10px 16px;
  font-size: 17px;
  line-height: 1.3333333;
  border-radius: 3px;
}
.btn-sm,
.btn-group-sm > .btn {
  padding: 5px 10px;
  font-size: 12px;
  line-height: 1.5;
  border-radius: 1px;
}
.btn-xs,
.btn-group-xs > .btn {
  padding: 1px 5px;
  font-size: 12px;
  line-height: 1.5;
  border-radius: 1px;
}
.btn-block {
  display: block;
  width: 100%;
}
.btn-block + .btn-block {
  margin-top: 5px;
}
input[type="submit"].btn-block,
input[type="reset"].btn-block,
input[type="button"].btn-block {
  width: 100%;
}
.fade {
  opacity: 0;
  -webkit-transition: opacity 0.15s linear;
  -o-transition: opacity 0.15s linear;
  transition: opacity 0.15s linear;
}
.fade.in {
  opacity: 1;
}
.collapse {
  display: none;
}
.collapse.in {
  display: block;
}
tr.collapse.in {
  display: table-row;
}
tbody.collapse.in {
  display: table-row-group;
}
.collapsing {
  position: relative;
  height: 0;
  overflow: hidden;
  -webkit-transition-property: height, visibility;
  transition-property: height, visibility;
  -webkit-transition-duration: 0.35s;
  transition-duration: 0.35s;
  -webkit-transition-timing-function: ease;
  transition-timing-function: ease;
}
.caret {
  display: inline-block;
  width: 0;
  height: 0;
  margin-left: 2px;
  vertical-align: middle;
  border-top: 4px dashed;
  border-top: 4px solid \9;
  border-right: 4px solid transparent;
  border-left: 4px solid transparent;
}
.dropup,
.dropdown {
  position: relative;
}
.dropdown-toggle:focus {
  outline: 0;
}
.dropdown-menu {
  position: absolute;
  top: 100%;
  left: 0;
  z-index: 1000;
  display: none;
  float: left;
  min-width: 160px;
  padding: 5px 0;
  margin: 2px 0 0;
  list-style: none;
  font-size: 13px;
  text-align: left;
  background-color: #fff;
  border: 1px solid #ccc;
  border: 1px solid rgba(0, 0, 0, 0.15);
  border-radius: 2px;
  -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);
  box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);
  background-clip: padding-box;
}
.dropdown-menu.pull-right {
  right: 0;
  left: auto;
}
.dropdown-menu .divider {
  height: 1px;
  margin: 8px 0;
  overflow: hidden;
  background-color: #e5e5e5;
}
.dropdown-menu > li > a {
  display: block;
  padding: 3px 20px;
  clear: both;
  font-weight: normal;
  line-height: 1.42857143;
  color: #333333;
  white-space: nowrap;
}
.dropdown-menu > li > a:hover,
.dropdown-menu > li > a:focus {
  text-decoration: none;
  color: #262626;
  background-color: #f5f5f5;
}
.dropdown-menu > .active > a,
.dropdown-menu > .active > a:hover,
.dropdown-menu > .active > a:focus {
  color: #fff;
  text-decoration: none;
  outline: 0;
  background-color: #337ab7;
}
.dropdown-menu > .disabled > a,
.dropdown-menu > .disabled > a:hover,
.dropdown-menu > .disabled > a:focus {
  color: #777777;
}
.dropdown-menu > .disabled > a:hover,
.dropdown-menu > .disabled > a:focus {
  text-decoration: none;
  background-color: transparent;
  background-image: none;
  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
  cursor: not-allowed;
}
.open > .dropdown-menu {
  display: block;
}
.open > a {
  outline: 0;
}
.dropdown-menu-right {
  left: auto;
  right: 0;
}
.dropdown-menu-left {
  left: 0;
  right: auto;
}
.dropdown-header {
  display: block;
  padding: 3px 20px;
  font-size: 12px;
  line-height: 1.42857143;
  color: #777777;
  white-space: nowrap;
}
.dropdown-backdrop {
  position: fixed;
  left: 0;
  right: 0;
  bottom: 0;
  top: 0;
  z-index: 990;
}
.pull-right > .dropdown-menu {
  right: 0;
  left: auto;
}
.dropup .caret,
.navbar-fixed-bottom .dropdown .caret {
  border-top: 0;
  border-bottom: 4px dashed;
  border-bottom: 4px solid \9;
  content: "";
}
.dropup .dropdown-menu,
.navbar-fixed-bottom .dropdown .dropdown-menu {
  top: auto;
  bottom: 100%;
  margin-bottom: 2px;
}
@media (min-width: 541px) {
  .navbar-right .dropdown-menu {
    left: auto;
    right: 0;
  }
  .navbar-right .dropdown-menu-left {
    left: 0;
    right: auto;
  }
}
.btn-group,
.btn-group-vertical {
  position: relative;
  display: inline-block;
  vertical-align: middle;
}
.btn-group > .btn,
.btn-group-vertical > .btn {
  position: relative;
  float: left;
}
.btn-group > .btn:hover,
.btn-group-vertical > .btn:hover,
.btn-group > .btn:focus,
.btn-group-vertical > .btn:focus,
.btn-group > .btn:active,
.btn-group-vertical > .btn:active,
.btn-group > .btn.active,
.btn-group-vertical > .btn.active {
  z-index: 2;
}
.btn-group .btn + .btn,
.btn-group .btn + .btn-group,
.btn-group .btn-group + .btn,
.btn-group .btn-group + .btn-group {
  margin-left: -1px;
}
.btn-toolbar {
  margin-left: -5px;
}
.btn-toolbar .btn,
.btn-toolbar .btn-group,
.btn-toolbar .input-group {
  float: left;
}
.btn-toolbar > .btn,
.btn-toolbar > .btn-group,
.btn-toolbar > .input-group {
  margin-left: 5px;
}
.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {
  border-radius: 0;
}
.btn-group > .btn:first-child {
  margin-left: 0;
}
.btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) {
  border-bottom-right-radius: 0;
  border-top-right-radius: 0;
}
.btn-group > .btn:last-child:not(:first-child),
.btn-group > .dropdown-toggle:not(:first-child) {
  border-bottom-left-radius: 0;
  border-top-left-radius: 0;
}
.btn-group > .btn-group {
  float: left;
}
.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {
  border-radius: 0;
}
.btn-group > .btn-group:first-child:not(:last-child) > .btn:last-child,
.btn-group > .btn-group:first-child:not(:last-child) > .dropdown-toggle {
  border-bottom-right-radius: 0;
  border-top-right-radius: 0;
}
.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child {
  border-bottom-left-radius: 0;
  border-top-left-radius: 0;
}
.btn-group .dropdown-toggle:active,
.btn-group.open .dropdown-toggle {
  outline: 0;
}
.btn-group > .btn + .dropdown-toggle {
  padding-left: 8px;
  padding-right: 8px;
}
.btn-group > .btn-lg + .dropdown-toggle {
  padding-left: 12px;
  padding-right: 12px;
}
.btn-group.open .dropdown-toggle {
  -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
  box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
}
.btn-group.open .dropdown-toggle.btn-link {
  -webkit-box-shadow: none;
  box-shadow: none;
}
.btn .caret {
  margin-left: 0;
}
.btn-lg .caret {
  border-width: 5px 5px 0;
  border-bottom-width: 0;
}
.dropup .btn-lg .caret {
  border-width: 0 5px 5px;
}
.btn-group-vertical > .btn,
.btn-group-vertical > .btn-group,
.btn-group-vertical > .btn-group > .btn {
  display: block;
  float: none;
  width: 100%;
  max-width: 100%;
}
.btn-group-vertical > .btn-group > .btn {
  float: none;
}
.btn-group-vertical > .btn + .btn,
.btn-group-vertical > .btn + .btn-group,
.btn-group-vertical > .btn-group + .btn,
.btn-group-vertical > .btn-group + .btn-group {
  margin-top: -1px;
  margin-left: 0;
}
.btn-group-vertical > .btn:not(:first-child):not(:last-child) {
  border-radius: 0;
}
.btn-group-vertical > .btn:first-child:not(:last-child) {
  border-top-right-radius: 2px;
  border-top-left-radius: 2px;
  border-bottom-right-radius: 0;
  border-bottom-left-radius: 0;
}
.btn-group-vertical > .btn:last-child:not(:first-child) {
  border-top-right-radius: 0;
  border-top-left-radius: 0;
  border-bottom-right-radius: 2px;
  border-bottom-left-radius: 2px;
}
.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {
  border-radius: 0;
}
.btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child,
.btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle {
  border-bottom-right-radius: 0;
  border-bottom-left-radius: 0;
}
.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child {
  border-top-right-radius: 0;
  border-top-left-radius: 0;
}
.btn-group-justified {
  display: table;
  width: 100%;
  table-layout: fixed;
  border-collapse: separate;
}
.btn-group-justified > .btn,
.btn-group-justified > .btn-group {
  float: none;
  display: table-cell;
  width: 1%;
}
.btn-group-justified > .btn-group .btn {
  width: 100%;
}
.btn-group-justified > .btn-group .dropdown-menu {
  left: auto;
}
[data-toggle="buttons"] > .btn input[type="radio"],
[data-toggle="buttons"] > .btn-group > .btn input[type="radio"],
[data-toggle="buttons"] > .btn input[type="checkbox"],
[data-toggle="buttons"] > .btn-group > .btn input[type="checkbox"] {
  position: absolute;
  clip: rect(0, 0, 0, 0);
  pointer-events: none;
}
.input-group {
  position: relative;
  display: table;
  border-collapse: separate;
}
.input-group[class*="col-"] {
  float: none;
  padding-left: 0;
  padding-right: 0;
}
.input-group .form-control {
  position: relative;
  z-index: 2;
  float: left;
  width: 100%;
  margin-bottom: 0;
}
.input-group .form-control:focus {
  z-index: 3;
}
.input-group-lg > .form-control,
.input-group-lg > .input-group-addon,
.input-group-lg > .input-group-btn > .btn {
  height: 45px;
  padding: 10px 16px;
  font-size: 17px;
  line-height: 1.3333333;
  border-radius: 3px;
}
select.input-group-lg > .form-control,
select.input-group-lg > .input-group-addon,
select.input-group-lg > .input-group-btn > .btn {
  height: 45px;
  line-height: 45px;
}
textarea.input-group-lg > .form-control,
textarea.input-group-lg > .input-group-addon,
textarea.input-group-lg > .input-group-btn > .btn,
select[multiple].input-group-lg > .form-control,
select[multiple].input-group-lg > .input-group-addon,
select[multiple].input-group-lg > .input-group-btn > .btn {
  height: auto;
}
.input-group-sm > .form-control,
.input-group-sm > .input-group-addon,
.input-group-sm > .input-group-btn > .btn {
  height: 30px;
  padding: 5px 10px;
  font-size: 12px;
  line-height: 1.5;
  border-radius: 1px;
}
select.input-group-sm > .form-control,
select.input-group-sm > .input-group-addon,
select.input-group-sm > .input-group-btn > .btn {
  height: 30px;
  line-height: 30px;
}
textarea.input-group-sm > .form-control,
textarea.input-group-sm > .input-group-addon,
textarea.input-group-sm > .input-group-btn > .btn,
select[multiple].input-group-sm > .form-control,
select[multiple].input-group-sm > .input-group-addon,
select[multiple].input-group-sm > .input-group-btn > .btn {
  height: auto;
}
.input-group-addon,
.input-group-btn,
.input-group .form-control {
  display: table-cell;
}
.input-group-addon:not(:first-child):not(:last-child),
.input-group-btn:not(:first-child):not(:last-child),
.input-group .form-control:not(:first-child):not(:last-child) {
  border-radius: 0;
}
.input-group-addon,
.input-group-btn {
  width: 1%;
  white-space: nowrap;
  vertical-align: middle;
}
.input-group-addon {
  padding: 6px 12px;
  font-size: 13px;
  font-weight: normal;
  line-height: 1;
  color: #555555;
  text-align: center;
  background-color: #eeeeee;
  border: 1px solid #ccc;
  border-radius: 2px;
}
.input-group-addon.input-sm {
  padding: 5px 10px;
  font-size: 12px;
  border-radius: 1px;
}
.input-group-addon.input-lg {
  padding: 10px 16px;
  font-size: 17px;
  border-radius: 3px;
}
.input-group-addon input[type="radio"],
.input-group-addon input[type="checkbox"] {
  margin-top: 0;
}
.input-group .form-control:first-child,
.input-group-addon:first-child,
.input-group-btn:first-child > .btn,
.input-group-btn:first-child > .btn-group > .btn,
.input-group-btn:first-child > .dropdown-toggle,
.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle),
.input-group-btn:last-child > .btn-group:not(:last-child) > .btn {
  border-bottom-right-radius: 0;
  border-top-right-radius: 0;
}
.input-group-addon:first-child {
  border-right: 0;
}
.input-group .form-control:last-child,
.input-group-addon:last-child,
.input-group-btn:last-child > .btn,
.input-group-btn:last-child > .btn-group > .btn,
.input-group-btn:last-child > .dropdown-toggle,
.input-group-btn:first-child > .btn:not(:first-child),
.input-group-btn:first-child > .btn-group:not(:first-child) > .btn {
  border-bottom-left-radius: 0;
  border-top-left-radius: 0;
}
.input-group-addon:last-child {
  border-left: 0;
}
.input-group-btn {
  position: relative;
  font-size: 0;
  white-space: nowrap;
}
.input-group-btn > .btn {
  position: relative;
}
.input-group-btn > .btn + .btn {
  margin-left: -1px;
}
.input-group-btn > .btn:hover,
.input-group-btn > .btn:focus,
.input-group-btn > .btn:active {
  z-index: 2;
}
.input-group-btn:first-child > .btn,
.input-group-btn:first-child > .btn-group {
  margin-right: -1px;
}
.input-group-btn:last-child > .btn,
.input-group-btn:last-child > .btn-group {
  z-index: 2;
  margin-left: -1px;
}
.nav {
  margin-bottom: 0;
  padding-left: 0;
  list-style: none;
}
.nav > li {
  position: relative;
  display: block;
}
.nav > li > a {
  position: relative;
  display: block;
  padding: 10px 15px;
}
.nav > li > a:hover,
.nav > li > a:focus {
  text-decoration: none;
  background-color: #eeeeee;
}
.nav > li.disabled > a {
  color: #777777;
}
.nav > li.disabled > a:hover,
.nav > li.disabled > a:focus {
  color: #777777;
  text-decoration: none;
  background-color: transparent;
  cursor: not-allowed;
}
.nav .open > a,
.nav .open > a:hover,
.nav .open > a:focus {
  background-color: #eeeeee;
  border-color: #337ab7;
}
.nav .nav-divider {
  height: 1px;
  margin: 8px 0;
  overflow: hidden;
  background-color: #e5e5e5;
}
.nav > li > a > img {
  max-width: none;
}
.nav-tabs {
  border-bottom: 1px solid #ddd;
}
.nav-tabs > li {
  float: left;
  margin-bottom: -1px;
}
.nav-tabs > li > a {
  margin-right: 2px;
  line-height: 1.42857143;
  border: 1px solid transparent;
  border-radius: 2px 2px 0 0;
}
.nav-tabs > li > a:hover {
  border-color: #eeeeee #eeeeee #ddd;
}
.nav-tabs > li.active > a,
.nav-tabs > li.active > a:hover,
.nav-tabs > li.active > a:focus {
  color: #555555;
  background-color: #fff;
  border: 1px solid #ddd;
  border-bottom-color: transparent;
  cursor: default;
}
.nav-tabs.nav-justified {
  width: 100%;
  border-bottom: 0;
}
.nav-tabs.nav-justified > li {
  float: none;
}
.nav-tabs.nav-justified > li > a {
  text-align: center;
  margin-bottom: 5px;
}
.nav-tabs.nav-justified > .dropdown .dropdown-menu {
  top: auto;
  left: auto;
}
@media (min-width: 768px) {
  .nav-tabs.nav-justified > li {
    display: table-cell;
    width: 1%;
  }
  .nav-tabs.nav-justified > li > a {
    margin-bottom: 0;
  }
}
.nav-tabs.nav-justified > li > a {
  margin-right: 0;
  border-radius: 2px;
}
.nav-tabs.nav-justified > .active > a,
.nav-tabs.nav-justified > .active > a:hover,
.nav-tabs.nav-justified > .active > a:focus {
  border: 1px solid #ddd;
}
@media (min-width: 768px) {
  .nav-tabs.nav-justified > li > a {
    border-bottom: 1px solid #ddd;
    border-radius: 2px 2px 0 0;
  }
  .nav-tabs.nav-justified > .active > a,
  .nav-tabs.nav-justified > .active > a:hover,
  .nav-tabs.nav-justified > .active > a:focus {
    border-bottom-color: #fff;
  }
}
.nav-pills > li {
  float: left;
}
.nav-pills > li > a {
  border-radius: 2px;
}
.nav-pills > li + li {
  margin-left: 2px;
}
.nav-pills > li.active > a,
.nav-pills > li.active > a:hover,
.nav-pills > li.active > a:focus {
  color: #fff;
  background-color: #337ab7;
}
.nav-stacked > li {
  float: none;
}
.nav-stacked > li + li {
  margin-top: 2px;
  margin-left: 0;
}
.nav-justified {
  width: 100%;
}
.nav-justified > li {
  float: none;
}
.nav-justified > li > a {
  text-align: center;
  margin-bottom: 5px;
}
.nav-justified > .dropdown .dropdown-menu {
  top: auto;
  left: auto;
}
@media (min-width: 768px) {
  .nav-justified > li {
    display: table-cell;
    width: 1%;
  }
  .nav-justified > li > a {
    margin-bottom: 0;
  }
}
.nav-tabs-justified {
  border-bottom: 0;
}
.nav-tabs-justified > li > a {
  margin-right: 0;
  border-radius: 2px;
}
.nav-tabs-justified > .active > a,
.nav-tabs-justified > .active > a:hover,
.nav-tabs-justified > .active > a:focus {
  border: 1px solid #ddd;
}
@media (min-width: 768px) {
  .nav-tabs-justified > li > a {
    border-bottom: 1px solid #ddd;
    border-radius: 2px 2px 0 0;
  }
  .nav-tabs-justified > .active > a,
  .nav-tabs-justified > .active > a:hover,
  .nav-tabs-justified > .active > a:focus {
    border-bottom-color: #fff;
  }
}
.tab-content > .tab-pane {
  display: none;
}
.tab-content > .active {
  display: block;
}
.nav-tabs .dropdown-menu {
  margin-top: -1px;
  border-top-right-radius: 0;
  border-top-left-radius: 0;
}
.navbar {
  position: relative;
  min-height: 30px;
  margin-bottom: 18px;
  border: 1px solid transparent;
}
@media (min-width: 541px) {
  .navbar {
    border-radius: 2px;
  }
}
@media (min-width: 541px) {
  .navbar-header {
    float: left;
  }
}
.navbar-collapse {
  overflow-x: visible;
  padding-right: 0px;
  padding-left: 0px;
  border-top: 1px solid transparent;
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1);
  -webkit-overflow-scrolling: touch;
}
.navbar-collapse.in {
  overflow-y: auto;
}
@media (min-width: 541px) {
  .navbar-collapse {
    width: auto;
    border-top: 0;
    box-shadow: none;
  }
  .navbar-collapse.collapse {
    display: block !important;
    height: auto !important;
    padding-bottom: 0;
    overflow: visible !important;
  }
  .navbar-collapse.in {
    overflow-y: visible;
  }
  .navbar-fixed-top .navbar-collapse,
  .navbar-static-top .navbar-collapse,
  .navbar-fixed-bottom .navbar-collapse {
    padding-left: 0;
    padding-right: 0;
  }
}
.navbar-fixed-top .navbar-collapse,
.navbar-fixed-bottom .navbar-collapse {
  max-height: 340px;
}
@media (max-device-width: 540px) and (orientation: landscape) {
  .navbar-fixed-top .navbar-collapse,
  .navbar-fixed-bottom .navbar-collapse {
    max-height: 200px;
  }
}
.container > .navbar-header,
.container-fluid > .navbar-header,
.container > .navbar-collapse,
.container-fluid > .navbar-collapse {
  margin-right: 0px;
  margin-left: 0px;
}
@media (min-width: 541px) {
  .container > .navbar-header,
  .container-fluid > .navbar-header,
  .container > .navbar-collapse,
  .container-fluid > .navbar-collapse {
    margin-right: 0;
    margin-left: 0;
  }
}
.navbar-static-top {
  z-index: 1000;
  border-width: 0 0 1px;
}
@media (min-width: 541px) {
  .navbar-static-top {
    border-radius: 0;
  }
}
.navbar-fixed-top,
.navbar-fixed-bottom {
  position: fixed;
  right: 0;
  left: 0;
  z-index: 1030;
}
@media (min-width: 541px) {
  .navbar-fixed-top,
  .navbar-fixed-bottom {
    border-radius: 0;
  }
}
.navbar-fixed-top {
  top: 0;
  border-width: 0 0 1px;
}
.navbar-fixed-bottom {
  bottom: 0;
  margin-bottom: 0;
  border-width: 1px 0 0;
}
.navbar-brand {
  float: left;
  padding: 6px 0px;
  font-size: 17px;
  line-height: 18px;
  height: 30px;
}
.navbar-brand:hover,
.navbar-brand:focus {
  text-decoration: none;
}
.navbar-brand > img {
  display: block;
}
@media (min-width: 541px) {
  .navbar > .container .navbar-brand,
  .navbar > .container-fluid .navbar-brand {
    margin-left: 0px;
  }
}
.navbar-toggle {
  position: relative;
  float: right;
  margin-right: 0px;
  padding: 9px 10px;
  margin-top: -2px;
  margin-bottom: -2px;
  background-color: transparent;
  background-image: none;
  border: 1px solid transparent;
  border-radius: 2px;
}
.navbar-toggle:focus {
  outline: 0;
}
.navbar-toggle .icon-bar {
  display: block;
  width: 22px;
  height: 2px;
  border-radius: 1px;
}
.navbar-toggle .icon-bar + .icon-bar {
  margin-top: 4px;
}
@media (min-width: 541px) {
  .navbar-toggle {
    display: none;
  }
}
.navbar-nav {
  margin: 3px 0px;
}
.navbar-nav > li > a {
  padding-top: 10px;
  padding-bottom: 10px;
  line-height: 18px;
}
@media (max-width: 540px) {
  .navbar-nav .open .dropdown-menu {
    position: static;
    float: none;
    width: auto;
    margin-top: 0;
    background-color: transparent;
    border: 0;
    box-shadow: none;
  }
  .navbar-nav .open .dropdown-menu > li > a,
  .navbar-nav .open .dropdown-menu .dropdown-header {
    padding: 5px 15px 5px 25px;
  }
  .navbar-nav .open .dropdown-menu > li > a {
    line-height: 18px;
  }
  .navbar-nav .open .dropdown-menu > li > a:hover,
  .navbar-nav .open .dropdown-menu > li > a:focus {
    background-image: none;
  }
}
@media (min-width: 541px) {
  .navbar-nav {
    float: left;
    margin: 0;
  }
  .navbar-nav > li {
    float: left;
  }
  .navbar-nav > li > a {
    padding-top: 6px;
    padding-bottom: 6px;
  }
}
.navbar-form {
  margin-left: 0px;
  margin-right: 0px;
  padding: 10px 0px;
  border-top: 1px solid transparent;
  border-bottom: 1px solid transparent;
  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);
  margin-top: -1px;
  margin-bottom: -1px;
}
@media (min-width: 768px) {
  .navbar-form .form-group {
    display: inline-block;
    margin-bottom: 0;
    vertical-align: middle;
  }
  .navbar-form .form-control {
    display: inline-block;
    width: auto;
    vertical-align: middle;
  }
  .navbar-form .form-control-static {
    display: inline-block;
  }
  .navbar-form .input-group {
    display: inline-table;
    vertical-align: middle;
  }
  .navbar-form .input-group .input-group-addon,
  .navbar-form .input-group .input-group-btn,
  .navbar-form .input-group .form-control {
    width: auto;
  }
  .navbar-form .input-group > .form-control {
    width: 100%;
  }
  .navbar-form .control-label {
    margin-bottom: 0;
    vertical-align: middle;
  }
  .navbar-form .radio,
  .navbar-form .checkbox {
    display: inline-block;
    margin-top: 0;
    margin-bottom: 0;
    vertical-align: middle;
  }
  .navbar-form .radio label,
  .navbar-form .checkbox label {
    padding-left: 0;
  }
  .navbar-form .radio input[type="radio"],
  .navbar-form .checkbox input[type="checkbox"] {
    position: relative;
    margin-left: 0;
  }
  .navbar-form .has-feedback .form-control-feedback {
    top: 0;
  }
}
@media (max-width: 540px) {
  .navbar-form .form-group {
    margin-bottom: 5px;
  }
  .navbar-form .form-group:last-child {
    margin-bottom: 0;
  }
}
@media (min-width: 541px) {
  .navbar-form {
    width: auto;
    border: 0;
    margin-left: 0;
    margin-right: 0;
    padding-top: 0;
    padding-bottom: 0;
    -webkit-box-shadow: none;
    box-shadow: none;
  }
}
.navbar-nav > li > .dropdown-menu {
  margin-top: 0;
  border-top-right-radius: 0;
  border-top-left-radius: 0;
}
.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu {
  margin-bottom: 0;
  border-top-right-radius: 2px;
  border-top-left-radius: 2px;
  border-bottom-right-radius: 0;
  border-bottom-left-radius: 0;
}
.navbar-btn {
  margin-top: -1px;
  margin-bottom: -1px;
}
.navbar-btn.btn-sm {
  margin-top: 0px;
  margin-bottom: 0px;
}
.navbar-btn.btn-xs {
  margin-top: 4px;
  margin-bottom: 4px;
}
.navbar-text {
  margin-top: 6px;
  margin-bottom: 6px;
}
@media (min-width: 541px) {
  .navbar-text {
    float: left;
    margin-left: 0px;
    margin-right: 0px;
  }
}
@media (min-width: 541px) {
  .navbar-left {
    float: left !important;
    float: left;
  }
  .navbar-right {
    float: right !important;
    float: right;
    margin-right: 0px;
  }
  .navbar-right ~ .navbar-right {
    margin-right: 0;
  }
}
.navbar-default {
  background-color: #f8f8f8;
  border-color: #e7e7e7;
}
.navbar-default .navbar-brand {
  color: #777;
}
.navbar-default .navbar-brand:hover,
.navbar-default .navbar-brand:focus {
  color: #5e5e5e;
  background-color: transparent;
}
.navbar-default .navbar-text {
  color: #777;
}
.navbar-default .navbar-nav > li > a {
  color: #777;
}
.navbar-default .navbar-nav > li > a:hover,
.navbar-default .navbar-nav > li > a:focus {
  color: #333;
  background-color: transparent;
}
.navbar-default .navbar-nav > .active > a,
.navbar-default .navbar-nav > .active > a:hover,
.navbar-default .navbar-nav > .active > a:focus {
  color: #555;
  background-color: #e7e7e7;
}
.navbar-default .navbar-nav > .disabled > a,
.navbar-default .navbar-nav > .disabled > a:hover,
.navbar-default .navbar-nav > .disabled > a:focus {
  color: #ccc;
  background-color: transparent;
}
.navbar-default .navbar-toggle {
  border-color: #ddd;
}
.navbar-default .navbar-toggle:hover,
.navbar-default .navbar-toggle:focus {
  background-color: #ddd;
}
.navbar-default .navbar-toggle .icon-bar {
  background-color: #888;
}
.navbar-default .navbar-collapse,
.navbar-default .navbar-form {
  border-color: #e7e7e7;
}
.navbar-default .navbar-nav > .open > a,
.navbar-default .navbar-nav > .open > a:hover,
.navbar-default .navbar-nav > .open > a:focus {
  background-color: #e7e7e7;
  color: #555;
}
@media (max-width: 540px) {
  .navbar-default .navbar-nav .open .dropdown-menu > li > a {
    color: #777;
  }
  .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover,
  .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus {
    color: #333;
    background-color: transparent;
  }
  .navbar-default .navbar-nav .open .dropdown-menu > .active > a,
  .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover,
  .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus {
    color: #555;
    background-color: #e7e7e7;
  }
  .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a,
  .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover,
  .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus {
    color: #ccc;
    background-color: transparent;
  }
}
.navbar-default .navbar-link {
  color: #777;
}
.navbar-default .navbar-link:hover {
  color: #333;
}
.navbar-default .btn-link {
  color: #777;
}
.navbar-default .btn-link:hover,
.navbar-default .btn-link:focus {
  color: #333;
}
.navbar-default .btn-link[disabled]:hover,
fieldset[disabled] .navbar-default .btn-link:hover,
.navbar-default .btn-link[disabled]:focus,
fieldset[disabled] .navbar-default .btn-link:focus {
  color: #ccc;
}
.navbar-inverse {
  background-color: #222;
  border-color: #080808;
}
.navbar-inverse .navbar-brand {
  color: #9d9d9d;
}
.navbar-inverse .navbar-brand:hover,
.navbar-inverse .navbar-brand:focus {
  color: #fff;
  background-color: transparent;
}
.navbar-inverse .navbar-text {
  color: #9d9d9d;
}
.navbar-inverse .navbar-nav > li > a {
  color: #9d9d9d;
}
.navbar-inverse .navbar-nav > li > a:hover,
.navbar-inverse .navbar-nav > li > a:focus {
  color: #fff;
  background-color: transparent;
}
.navbar-inverse .navbar-nav > .active > a,
.navbar-inverse .navbar-nav > .active > a:hover,
.navbar-inverse .navbar-nav > .active > a:focus {
  color: #fff;
  background-color: #080808;
}
.navbar-inverse .navbar-nav > .disabled > a,
.navbar-inverse .navbar-nav > .disabled > a:hover,
.navbar-inverse .navbar-nav > .disabled > a:focus {
  color: #444;
  background-color: transparent;
}
.navbar-inverse .navbar-toggle {
  border-color: #333;
}
.navbar-inverse .navbar-toggle:hover,
.navbar-inverse .navbar-toggle:focus {
  background-color: #333;
}
.navbar-inverse .navbar-toggle .icon-bar {
  background-color: #fff;
}
.navbar-inverse .navbar-collapse,
.navbar-inverse .navbar-form {
  border-color: #101010;
}
.navbar-inverse .navbar-nav > .open > a,
.navbar-inverse .navbar-nav > .open > a:hover,
.navbar-inverse .navbar-nav > .open > a:focus {
  background-color: #080808;
  color: #fff;
}
@media (max-width: 540px) {
  .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header {
    border-color: #080808;
  }
  .navbar-inverse .navbar-nav .open .dropdown-menu .divider {
    background-color: #080808;
  }
  .navbar-inverse .navbar-nav .open .dropdown-menu > li > a {
    color: #9d9d9d;
  }
  .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover,
  .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus {
    color: #fff;
    background-color: transparent;
  }
  .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a,
  .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover,
  .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus {
    color: #fff;
    background-color: #080808;
  }
  .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a,
  .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover,
  .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus {
    color: #444;
    background-color: transparent;
  }
}
.navbar-inverse .navbar-link {
  color: #9d9d9d;
}
.navbar-inverse .navbar-link:hover {
  color: #fff;
}
.navbar-inverse .btn-link {
  color: #9d9d9d;
}
.navbar-inverse .btn-link:hover,
.navbar-inverse .btn-link:focus {
  color: #fff;
}
.navbar-inverse .btn-link[disabled]:hover,
fieldset[disabled] .navbar-inverse .btn-link:hover,
.navbar-inverse .btn-link[disabled]:focus,
fieldset[disabled] .navbar-inverse .btn-link:focus {
  color: #444;
}
.breadcrumb {
  padding: 8px 15px;
  margin-bottom: 18px;
  list-style: none;
  background-color: #f5f5f5;
  border-radius: 2px;
}
.breadcrumb > li {
  display: inline-block;
}
.breadcrumb > li + li:before {
  content: "/\00a0";
  padding: 0 5px;
  color: #5e5e5e;
}
.breadcrumb > .active {
  color: #777777;
}
.pagination {
  display: inline-block;
  padding-left: 0;
  margin: 18px 0;
  border-radius: 2px;
}
.pagination > li {
  display: inline;
}
.pagination > li > a,
.pagination > li > span {
  position: relative;
  float: left;
  padding: 6px 12px;
  line-height: 1.42857143;
  text-decoration: none;
  color: #337ab7;
  background-color: #fff;
  border: 1px solid #ddd;
  margin-left: -1px;
}
.pagination > li:first-child > a,
.pagination > li:first-child > span {
  margin-left: 0;
  border-bottom-left-radius: 2px;
  border-top-left-radius: 2px;
}
.pagination > li:last-child > a,
.pagination > li:last-child > span {
  border-bottom-right-radius: 2px;
  border-top-right-radius: 2px;
}
.pagination > li > a:hover,
.pagination > li > span:hover,
.pagination > li > a:focus,
.pagination > li > span:focus {
  z-index: 2;
  color: #23527c;
  background-color: #eeeeee;
  border-color: #ddd;
}
.pagination > .active > a,
.pagination > .active > span,
.pagination > .active > a:hover,
.pagination > .active > span:hover,
.pagination > .active > a:focus,
.pagination > .active > span:focus {
  z-index: 3;
  color: #fff;
  background-color: #337ab7;
  border-color: #337ab7;
  cursor: default;
}
.pagination > .disabled > span,
.pagination > .disabled > span:hover,
.pagination > .disabled > span:focus,
.pagination > .disabled > a,
.pagination > .disabled > a:hover,
.pagination > .disabled > a:focus {
  color: #777777;
  background-color: #fff;
  border-color: #ddd;
  cursor: not-allowed;
}
.pagination-lg > li > a,
.pagination-lg > li > span {
  padding: 10px 16px;
  font-size: 17px;
  line-height: 1.3333333;
}
.pagination-lg > li:first-child > a,
.pagination-lg > li:first-child > span {
  border-bottom-left-radius: 3px;
  border-top-left-radius: 3px;
}
.pagination-lg > li:last-child > a,
.pagination-lg > li:last-child > span {
  border-bottom-right-radius: 3px;
  border-top-right-radius: 3px;
}
.pagination-sm > li > a,
.pagination-sm > li > span {
  padding: 5px 10px;
  font-size: 12px;
  line-height: 1.5;
}
.pagination-sm > li:first-child > a,
.pagination-sm > li:first-child > span {
  border-bottom-left-radius: 1px;
  border-top-left-radius: 1px;
}
.pagination-sm > li:last-child > a,
.pagination-sm > li:last-child > span {
  border-bottom-right-radius: 1px;
  border-top-right-radius: 1px;
}
.pager {
  padding-left: 0;
  margin: 18px 0;
  list-style: none;
  text-align: center;
}
.pager li {
  display: inline;
}
.pager li > a,
.pager li > span {
  display: inline-block;
  padding: 5px 14px;
  background-color: #fff;
  border: 1px solid #ddd;
  border-radius: 15px;
}
.pager li > a:hover,
.pager li > a:focus {
  text-decoration: none;
  background-color: #eeeeee;
}
.pager .next > a,
.pager .next > span {
  float: right;
}
.pager .previous > a,
.pager .previous > span {
  float: left;
}
.pager .disabled > a,
.pager .disabled > a:hover,
.pager .disabled > a:focus,
.pager .disabled > span {
  color: #777777;
  background-color: #fff;
  cursor: not-allowed;
}
.label {
  display: inline;
  padding: .2em .6em .3em;
  font-size: 75%;
  font-weight: bold;
  line-height: 1;
  color: #fff;
  text-align: center;
  white-space: nowrap;
  vertical-align: baseline;
  border-radius: .25em;
}
a.label:hover,
a.label:focus {
  color: #fff;
  text-decoration: none;
  cursor: pointer;
}
.label:empty {
  display: none;
}
.btn .label {
  position: relative;
  top: -1px;
}
.label-default {
  background-color: #777777;
}
.label-default[href]:hover,
.label-default[href]:focus {
  background-color: #5e5e5e;
}
.label-primary {
  background-color: #337ab7;
}
.label-primary[href]:hover,
.label-primary[href]:focus {
  background-color: #286090;
}
.label-success {
  background-color: #5cb85c;
}
.label-success[href]:hover,
.label-success[href]:focus {
  background-color: #449d44;
}
.label-info {
  background-color: #5bc0de;
}
.label-info[href]:hover,
.label-info[href]:focus {
  background-color: #31b0d5;
}
.label-warning {
  background-color: #f0ad4e;
}
.label-warning[href]:hover,
.label-warning[href]:focus {
  background-color: #ec971f;
}
.label-danger {
  background-color: #d9534f;
}
.label-danger[href]:hover,
.label-danger[href]:focus {
  background-color: #c9302c;
}
.badge {
  display: inline-block;
  min-width: 10px;
  padding: 3px 7px;
  font-size: 12px;
  font-weight: bold;
  color: #fff;
  line-height: 1;
  vertical-align: middle;
  white-space: nowrap;
  text-align: center;
  background-color: #777777;
  border-radius: 10px;
}
.badge:empty {
  display: none;
}
.btn .badge {
  position: relative;
  top: -1px;
}
.btn-xs .badge,
.btn-group-xs > .btn .badge {
  top: 0;
  padding: 1px 5px;
}
a.badge:hover,
a.badge:focus {
  color: #fff;
  text-decoration: none;
  cursor: pointer;
}
.list-group-item.active > .badge,
.nav-pills > .active > a > .badge {
  color: #337ab7;
  background-color: #fff;
}
.list-group-item > .badge {
  float: right;
}
.list-group-item > .badge + .badge {
  margin-right: 5px;
}
.nav-pills > li > a > .badge {
  margin-left: 3px;
}
.jumbotron {
  padding-top: 30px;
  padding-bottom: 30px;
  margin-bottom: 30px;
  color: inherit;
  background-color: #eeeeee;
}
.jumbotron h1,
.jumbotron .h1 {
  color: inherit;
}
.jumbotron p {
  margin-bottom: 15px;
  font-size: 20px;
  font-weight: 200;
}
.jumbotron > hr {
  border-top-color: #d5d5d5;
}
.container .jumbotron,
.container-fluid .jumbotron {
  border-radius: 3px;
  padding-left: 0px;
  padding-right: 0px;
}
.jumbotron .container {
  max-width: 100%;
}
@media screen and (min-width: 768px) {
  .jumbotron {
    padding-top: 48px;
    padding-bottom: 48px;
  }
  .container .jumbotron,
  .container-fluid .jumbotron {
    padding-left: 60px;
    padding-right: 60px;
  }
  .jumbotron h1,
  .jumbotron .h1 {
    font-size: 59px;
  }
}
.thumbnail {
  display: block;
  padding: 4px;
  margin-bottom: 18px;
  line-height: 1.42857143;
  background-color: #fff;
  border: 1px solid #ddd;
  border-radius: 2px;
  -webkit-transition: border 0.2s ease-in-out;
  -o-transition: border 0.2s ease-in-out;
  transition: border 0.2s ease-in-out;
}
.thumbnail > img,
.thumbnail a > img {
  margin-left: auto;
  margin-right: auto;
}
a.thumbnail:hover,
a.thumbnail:focus,
a.thumbnail.active {
  border-color: #337ab7;
}
.thumbnail .caption {
  padding: 9px;
  color: #000;
}
.alert {
  padding: 15px;
  margin-bottom: 18px;
  border: 1px solid transparent;
  border-radius: 2px;
}
.alert h4 {
  margin-top: 0;
  color: inherit;
}
.alert .alert-link {
  font-weight: bold;
}
.alert > p,
.alert > ul {
  margin-bottom: 0;
}
.alert > p + p {
  margin-top: 5px;
}
.alert-dismissable,
.alert-dismissible {
  padding-right: 35px;
}
.alert-dismissable .close,
.alert-dismissible .close {
  position: relative;
  top: -2px;
  right: -21px;
  color: inherit;
}
.alert-success {
  background-color: #dff0d8;
  border-color: #d6e9c6;
  color: #3c763d;
}
.alert-success hr {
  border-top-color: #c9e2b3;
}
.alert-success .alert-link {
  color: #2b542c;
}
.alert-info {
  background-color: #d9edf7;
  border-color: #bce8f1;
  color: #31708f;
}
.alert-info hr {
  border-top-color: #a6e1ec;
}
.alert-info .alert-link {
  color: #245269;
}
.alert-warning {
  background-color: #fcf8e3;
  border-color: #faebcc;
  color: #8a6d3b;
}
.alert-warning hr {
  border-top-color: #f7e1b5;
}
.alert-warning .alert-link {
  color: #66512c;
}
.alert-danger {
  background-color: #f2dede;
  border-color: #ebccd1;
  color: #a94442;
}
.alert-danger hr {
  border-top-color: #e4b9c0;
}
.alert-danger .alert-link {
  color: #843534;
}
@-webkit-keyframes progress-bar-stripes {
  from {
    background-position: 40px 0;
  }
  to {
    background-position: 0 0;
  }
}
@keyframes progress-bar-stripes {
  from {
    background-position: 40px 0;
  }
  to {
    background-position: 0 0;
  }
}
.progress {
  overflow: hidden;
  height: 18px;
  margin-bottom: 18px;
  background-color: #f5f5f5;
  border-radius: 2px;
  -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
  box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
}
.progress-bar {
  float: left;
  width: 0%;
  height: 100%;
  font-size: 12px;
  line-height: 18px;
  color: #fff;
  text-align: center;
  background-color: #337ab7;
  -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
  box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
  -webkit-transition: width 0.6s ease;
  -o-transition: width 0.6s ease;
  transition: width 0.6s ease;
}
.progress-striped .progress-bar,
.progress-bar-striped {
  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
  background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
  background-size: 40px 40px;
}
.progress.active .progress-bar,
.progress-bar.active {
  -webkit-animation: progress-bar-stripes 2s linear infinite;
  -o-animation: progress-bar-stripes 2s linear infinite;
  animation: progress-bar-stripes 2s linear infinite;
}
.progress-bar-success {
  background-color: #5cb85c;
}
.progress-striped .progress-bar-success {
  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
  background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
}
.progress-bar-info {
  background-color: #5bc0de;
}
.progress-striped .progress-bar-info {
  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
  background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
}
.progress-bar-warning {
  background-color: #f0ad4e;
}
.progress-striped .progress-bar-warning {
  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
  background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
}
.progress-bar-danger {
  background-color: #d9534f;
}
.progress-striped .progress-bar-danger {
  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
  background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
}
.media {
  margin-top: 15px;
}
.media:first-child {
  margin-top: 0;
}
.media,
.media-body {
  zoom: 1;
  overflow: hidden;
}
.media-body {
  width: 10000px;
}
.media-object {
  display: block;
}
.media-object.img-thumbnail {
  max-width: none;
}
.media-right,
.media > .pull-right {
  padding-left: 10px;
}
.media-left,
.media > .pull-left {
  padding-right: 10px;
}
.media-left,
.media-right,
.media-body {
  display: table-cell;
  vertical-align: top;
}
.media-middle {
  vertical-align: middle;
}
.media-bottom {
  vertical-align: bottom;
}
.media-heading {
  margin-top: 0;
  margin-bottom: 5px;
}
.media-list {
  padding-left: 0;
  list-style: none;
}
.list-group {
  margin-bottom: 20px;
  padding-left: 0;
}
.list-group-item {
  position: relative;
  display: block;
  padding: 10px 15px;
  margin-bottom: -1px;
  background-color: #fff;
  border: 1px solid #ddd;
}
.list-group-item:first-child {
  border-top-right-radius: 2px;
  border-top-left-radius: 2px;
}
.list-group-item:last-child {
  margin-bottom: 0;
  border-bottom-right-radius: 2px;
  border-bottom-left-radius: 2px;
}
a.list-group-item,
button.list-group-item {
  color: #555;
}
a.list-group-item .list-group-item-heading,
button.list-group-item .list-group-item-heading {
  color: #333;
}
a.list-group-item:hover,
button.list-group-item:hover,
a.list-group-item:focus,
button.list-group-item:focus {
  text-decoration: none;
  color: #555;
  background-color: #f5f5f5;
}
button.list-group-item {
  width: 100%;
  text-align: left;
}
.list-group-item.disabled,
.list-group-item.disabled:hover,
.list-group-item.disabled:focus {
  background-color: #eeeeee;
  color: #777777;
  cursor: not-allowed;
}
.list-group-item.disabled .list-group-item-heading,
.list-group-item.disabled:hover .list-group-item-heading,
.list-group-item.disabled:focus .list-group-item-heading {
  color: inherit;
}
.list-group-item.disabled .list-group-item-text,
.list-group-item.disabled:hover .list-group-item-text,
.list-group-item.disabled:focus .list-group-item-text {
  color: #777777;
}
.list-group-item.active,
.list-group-item.active:hover,
.list-group-item.active:focus {
  z-index: 2;
  color: #fff;
  background-color: #337ab7;
  border-color: #337ab7;
}
.list-group-item.active .list-group-item-heading,
.list-group-item.active:hover .list-group-item-heading,
.list-group-item.active:focus .list-group-item-heading,
.list-group-item.active .list-group-item-heading > small,
.list-group-item.active:hover .list-group-item-heading > small,
.list-group-item.active:focus .list-group-item-heading > small,
.list-group-item.active .list-group-item-heading > .small,
.list-group-item.active:hover .list-group-item-heading > .small,
.list-group-item.active:focus .list-group-item-heading > .small {
  color: inherit;
}
.list-group-item.active .list-group-item-text,
.list-group-item.active:hover .list-group-item-text,
.list-group-item.active:focus .list-group-item-text {
  color: #c7ddef;
}
.list-group-item-success {
  color: #3c763d;
  background-color: #dff0d8;
}
a.list-group-item-success,
button.list-group-item-success {
  color: #3c763d;
}
a.list-group-item-success .list-group-item-heading,
button.list-group-item-success .list-group-item-heading {
  color: inherit;
}
a.list-group-item-success:hover,
button.list-group-item-success:hover,
a.list-group-item-success:focus,
button.list-group-item-success:focus {
  color: #3c763d;
  background-color: #d0e9c6;
}
a.list-group-item-success.active,
button.list-group-item-success.active,
a.list-group-item-success.active:hover,
button.list-group-item-success.active:hover,
a.list-group-item-success.active:focus,
button.list-group-item-success.active:focus {
  color: #fff;
  background-color: #3c763d;
  border-color: #3c763d;
}
.list-group-item-info {
  color: #31708f;
  background-color: #d9edf7;
}
a.list-group-item-info,
button.list-group-item-info {
  color: #31708f;
}
a.list-group-item-info .list-group-item-heading,
button.list-group-item-info .list-group-item-heading {
  color: inherit;
}
a.list-group-item-info:hover,
button.list-group-item-info:hover,
a.list-group-item-info:focus,
button.list-group-item-info:focus {
  color: #31708f;
  background-color: #c4e3f3;
}
a.list-group-item-info.active,
button.list-group-item-info.active,
a.list-group-item-info.active:hover,
button.list-group-item-info.active:hover,
a.list-group-item-info.active:focus,
button.list-group-item-info.active:focus {
  color: #fff;
  background-color: #31708f;
  border-color: #31708f;
}
.list-group-item-warning {
  color: #8a6d3b;
  background-color: #fcf8e3;
}
a.list-group-item-warning,
button.list-group-item-warning {
  color: #8a6d3b;
}
a.list-group-item-warning .list-group-item-heading,
button.list-group-item-warning .list-group-item-heading {
  color: inherit;
}
a.list-group-item-warning:hover,
button.list-group-item-warning:hover,
a.list-group-item-warning:focus,
button.list-group-item-warning:focus {
  color: #8a6d3b;
  background-color: #faf2cc;
}
a.list-group-item-warning.active,
button.list-group-item-warning.active,
a.list-group-item-warning.active:hover,
button.list-group-item-warning.active:hover,
a.list-group-item-warning.active:focus,
button.list-group-item-warning.active:focus {
  color: #fff;
  background-color: #8a6d3b;
  border-color: #8a6d3b;
}
.list-group-item-danger {
  color: #a94442;
  background-color: #f2dede;
}
a.list-group-item-danger,
button.list-group-item-danger {
  color: #a94442;
}
a.list-group-item-danger .list-group-item-heading,
button.list-group-item-danger .list-group-item-heading {
  color: inherit;
}
a.list-group-item-danger:hover,
button.list-group-item-danger:hover,
a.list-group-item-danger:focus,
button.list-group-item-danger:focus {
  color: #a94442;
  background-color: #ebcccc;
}
a.list-group-item-danger.active,
button.list-group-item-danger.active,
a.list-group-item-danger.active:hover,
button.list-group-item-danger.active:hover,
a.list-group-item-danger.active:focus,
button.list-group-item-danger.active:focus {
  color: #fff;
  background-color: #a94442;
  border-color: #a94442;
}
.list-group-item-heading {
  margin-top: 0;
  margin-bottom: 5px;
}
.list-group-item-text {
  margin-bottom: 0;
  line-height: 1.3;
}
.panel {
  margin-bottom: 18px;
  background-color: #fff;
  border: 1px solid transparent;
  border-radius: 2px;
  -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);
  box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);
}
.panel-body {
  padding: 15px;
}
.panel-heading {
  padding: 10px 15px;
  border-bottom: 1px solid transparent;
  border-top-right-radius: 1px;
  border-top-left-radius: 1px;
}
.panel-heading > .dropdown .dropdown-toggle {
  color: inherit;
}
.panel-title {
  margin-top: 0;
  margin-bottom: 0;
  font-size: 15px;
  color: inherit;
}
.panel-title > a,
.panel-title > small,
.panel-title > .small,
.panel-title > small > a,
.panel-title > .small > a {
  color: inherit;
}
.panel-footer {
  padding: 10px 15px;
  background-color: #f5f5f5;
  border-top: 1px solid #ddd;
  border-bottom-right-radius: 1px;
  border-bottom-left-radius: 1px;
}
.panel > .list-group,
.panel > .panel-collapse > .list-group {
  margin-bottom: 0;
}
.panel > .list-group .list-group-item,
.panel > .panel-collapse > .list-group .list-group-item {
  border-width: 1px 0;
  border-radius: 0;
}
.panel > .list-group:first-child .list-group-item:first-child,
.panel > .panel-collapse > .list-group:first-child .list-group-item:first-child {
  border-top: 0;
  border-top-right-radius: 1px;
  border-top-left-radius: 1px;
}
.panel > .list-group:last-child .list-group-item:last-child,
.panel > .panel-collapse > .list-group:last-child .list-group-item:last-child {
  border-bottom: 0;
  border-bottom-right-radius: 1px;
  border-bottom-left-radius: 1px;
}
.panel > .panel-heading + .panel-collapse > .list-group .list-group-item:first-child {
  border-top-right-radius: 0;
  border-top-left-radius: 0;
}
.panel-heading + .list-group .list-group-item:first-child {
  border-top-width: 0;
}
.list-group + .panel-footer {
  border-top-width: 0;
}
.panel > .table,
.panel > .table-responsive > .table,
.panel > .panel-collapse > .table {
  margin-bottom: 0;
}
.panel > .table caption,
.panel > .table-responsive > .table caption,
.panel > .panel-collapse > .table caption {
  padding-left: 15px;
  padding-right: 15px;
}
.panel > .table:first-child,
.panel > .table-responsive:first-child > .table:first-child {
  border-top-right-radius: 1px;
  border-top-left-radius: 1px;
}
.panel > .table:first-child > thead:first-child > tr:first-child,
.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child,
.panel > .table:first-child > tbody:first-child > tr:first-child,
.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child {
  border-top-left-radius: 1px;
  border-top-right-radius: 1px;
}
.panel > .table:first-child > thead:first-child > tr:first-child td:first-child,
.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:first-child,
.panel > .table:first-child > tbody:first-child > tr:first-child td:first-child,
.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:first-child,
.panel > .table:first-child > thead:first-child > tr:first-child th:first-child,
.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:first-child,
.panel > .table:first-child > tbody:first-child > tr:first-child th:first-child,
.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:first-child {
  border-top-left-radius: 1px;
}
.panel > .table:first-child > thead:first-child > tr:first-child td:last-child,
.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:last-child,
.panel > .table:first-child > tbody:first-child > tr:first-child td:last-child,
.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:last-child,
.panel > .table:first-child > thead:first-child > tr:first-child th:last-child,
.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:last-child,
.panel > .table:first-child > tbody:first-child > tr:first-child th:last-child,
.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:last-child {
  border-top-right-radius: 1px;
}
.panel > .table:last-child,
.panel > .table-responsive:last-child > .table:last-child {
  border-bottom-right-radius: 1px;
  border-bottom-left-radius: 1px;
}
.panel > .table:last-child > tbody:last-child > tr:last-child,
.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child,
.panel > .table:last-child > tfoot:last-child > tr:last-child,
.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child {
  border-bottom-left-radius: 1px;
  border-bottom-right-radius: 1px;
}
.panel > .table:last-child > tbody:last-child > tr:last-child td:first-child,
.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:first-child,
.panel > .table:last-child > tfoot:last-child > tr:last-child td:first-child,
.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:first-child,
.panel > .table:last-child > tbody:last-child > tr:last-child th:first-child,
.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:first-child,
.panel > .table:last-child > tfoot:last-child > tr:last-child th:first-child,
.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:first-child {
  border-bottom-left-radius: 1px;
}
.panel > .table:last-child > tbody:last-child > tr:last-child td:last-child,
.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:last-child,
.panel > .table:last-child > tfoot:last-child > tr:last-child td:last-child,
.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:last-child,
.panel > .table:last-child > tbody:last-child > tr:last-child th:last-child,
.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:last-child,
.panel > .table:last-child > tfoot:last-child > tr:last-child th:last-child,
.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:last-child {
  border-bottom-right-radius: 1px;
}
.panel > .panel-body + .table,
.panel > .panel-body + .table-responsive,
.panel > .table + .panel-body,
.panel > .table-responsive + .panel-body {
  border-top: 1px solid #ddd;
}
.panel > .table > tbody:first-child > tr:first-child th,
.panel > .table > tbody:first-child > tr:first-child td {
  border-top: 0;
}
.panel > .table-bordered,
.panel > .table-responsive > .table-bordered {
  border: 0;
}
.panel > .table-bordered > thead > tr > th:first-child,
.panel > .table-responsive > .table-bordered > thead > tr > th:first-child,
.panel > .table-bordered > tbody > tr > th:first-child,
.panel > .table-responsive > .table-bordered > tbody > tr > th:first-child,
.panel > .table-bordered > tfoot > tr > th:first-child,
.panel > .table-responsive > .table-bordered > tfoot > tr > th:first-child,
.panel > .table-bordered > thead > tr > td:first-child,
.panel > .table-responsive > .table-bordered > thead > tr > td:first-child,
.panel > .table-bordered > tbody > tr > td:first-child,
.panel > .table-responsive > .table-bordered > tbody > tr > td:first-child,
.panel > .table-bordered > tfoot > tr > td:first-child,
.panel > .table-responsive > .table-bordered > tfoot > tr > td:first-child {
  border-left: 0;
}
.panel > .table-bordered > thead > tr > th:last-child,
.panel > .table-responsive > .table-bordered > thead > tr > th:last-child,
.panel > .table-bordered > tbody > tr > th:last-child,
.panel > .table-responsive > .table-bordered > tbody > tr > th:last-child,
.panel > .table-bordered > tfoot > tr > th:last-child,
.panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child,
.panel > .table-bordered > thead > tr > td:last-child,
.panel > .table-responsive > .table-bordered > thead > tr > td:last-child,
.panel > .table-bordered > tbody > tr > td:last-child,
.panel > .table-responsive > .table-bordered > tbody > tr > td:last-child,
.panel > .table-bordered > tfoot > tr > td:last-child,
.panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child {
  border-right: 0;
}
.panel > .table-bordered > thead > tr:first-child > td,
.panel > .table-responsive > .table-bordered > thead > tr:first-child > td,
.panel > .table-bordered > tbody > tr:first-child > td,
.panel > .table-responsive > .table-bordered > tbody > tr:first-child > td,
.panel > .table-bordered > thead > tr:first-child > th,
.panel > .table-responsive > .table-bordered > thead > tr:first-child > th,
.panel > .table-bordered > tbody > tr:first-child > th,
.panel > .table-responsive > .table-bordered > tbody > tr:first-child > th {
  border-bottom: 0;
}
.panel > .table-bordered > tbody > tr:last-child > td,
.panel > .table-responsive > .table-bordered > tbody > tr:last-child > td,
.panel > .table-bordered > tfoot > tr:last-child > td,
.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > td,
.panel > .table-bordered > tbody > tr:last-child > th,
.panel > .table-responsive > .table-bordered > tbody > tr:last-child > th,
.panel > .table-bordered > tfoot > tr:last-child > th,
.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > th {
  border-bottom: 0;
}
.panel > .table-responsive {
  border: 0;
  margin-bottom: 0;
}
.panel-group {
  margin-bottom: 18px;
}
.panel-group .panel {
  margin-bottom: 0;
  border-radius: 2px;
}
.panel-group .panel + .panel {
  margin-top: 5px;
}
.panel-group .panel-heading {
  border-bottom: 0;
}
.panel-group .panel-heading + .panel-collapse > .panel-body,
.panel-group .panel-heading + .panel-collapse > .list-group {
  border-top: 1px solid #ddd;
}
.panel-group .panel-footer {
  border-top: 0;
}
.panel-group .panel-footer + .panel-collapse .panel-body {
  border-bottom: 1px solid #ddd;
}
.panel-default {
  border-color: #ddd;
}
.panel-default > .panel-heading {
  color: #333333;
  background-color: #f5f5f5;
  border-color: #ddd;
}
.panel-default > .panel-heading + .panel-collapse > .panel-body {
  border-top-color: #ddd;
}
.panel-default > .panel-heading .badge {
  color: #f5f5f5;
  background-color: #333333;
}
.panel-default > .panel-footer + .panel-collapse > .panel-body {
  border-bottom-color: #ddd;
}
.panel-primary {
  border-color: #337ab7;
}
.panel-primary > .panel-heading {
  color: #fff;
  background-color: #337ab7;
  border-color: #337ab7;
}
.panel-primary > .panel-heading + .panel-collapse > .panel-body {
  border-top-color: #337ab7;
}
.panel-primary > .panel-heading .badge {
  color: #337ab7;
  background-color: #fff;
}
.panel-primary > .panel-footer + .panel-collapse > .panel-body {
  border-bottom-color: #337ab7;
}
.panel-success {
  border-color: #d6e9c6;
}
.panel-success > .panel-heading {
  color: #3c763d;
  background-color: #dff0d8;
  border-color: #d6e9c6;
}
.panel-success > .panel-heading + .panel-collapse > .panel-body {
  border-top-color: #d6e9c6;
}
.panel-success > .panel-heading .badge {
  color: #dff0d8;
  background-color: #3c763d;
}
.panel-success > .panel-footer + .panel-collapse > .panel-body {
  border-bottom-color: #d6e9c6;
}
.panel-info {
  border-color: #bce8f1;
}
.panel-info > .panel-heading {
  color: #31708f;
  background-color: #d9edf7;
  border-color: #bce8f1;
}
.panel-info > .panel-heading + .panel-collapse > .panel-body {
  border-top-color: #bce8f1;
}
.panel-info > .panel-heading .badge {
  color: #d9edf7;
  background-color: #31708f;
}
.panel-info > .panel-footer + .panel-collapse > .panel-body {
  border-bottom-color: #bce8f1;
}
.panel-warning {
  border-color: #faebcc;
}
.panel-warning > .panel-heading {
  color: #8a6d3b;
  background-color: #fcf8e3;
  border-color: #faebcc;
}
.panel-warning > .panel-heading + .panel-collapse > .panel-body {
  border-top-color: #faebcc;
}
.panel-warning > .panel-heading .badge {
  color: #fcf8e3;
  background-color: #8a6d3b;
}
.panel-warning > .panel-footer + .panel-collapse > .panel-body {
  border-bottom-color: #faebcc;
}
.panel-danger {
  border-color: #ebccd1;
}
.panel-danger > .panel-heading {
  color: #a94442;
  background-color: #f2dede;
  border-color: #ebccd1;
}
.panel-danger > .panel-heading + .panel-collapse > .panel-body {
  border-top-color: #ebccd1;
}
.panel-danger > .panel-heading .badge {
  color: #f2dede;
  background-color: #a94442;
}
.panel-danger > .panel-footer + .panel-collapse > .panel-body {
  border-bottom-color: #ebccd1;
}
.embed-responsive {
  position: relative;
  display: block;
  height: 0;
  padding: 0;
  overflow: hidden;
}
.embed-responsive .embed-responsive-item,
.embed-responsive iframe,
.embed-responsive embed,
.embed-responsive object,
.embed-responsive video {
  position: absolute;
  top: 0;
  left: 0;
  bottom: 0;
  height: 100%;
  width: 100%;
  border: 0;
}
.embed-responsive-16by9 {
  padding-bottom: 56.25%;
}
.embed-responsive-4by3 {
  padding-bottom: 75%;
}
.well {
  min-height: 20px;
  padding: 19px;
  margin-bottom: 20px;
  background-color: #f5f5f5;
  border: 1px solid #e3e3e3;
  border-radius: 2px;
  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
}
.well blockquote {
  border-color: #ddd;
  border-color: rgba(0, 0, 0, 0.15);
}
.well-lg {
  padding: 24px;
  border-radius: 3px;
}
.well-sm {
  padding: 9px;
  border-radius: 1px;
}
.close {
  float: right;
  font-size: 19.5px;
  font-weight: bold;
  line-height: 1;
  color: #000;
  text-shadow: 0 1px 0 #fff;
  opacity: 0.2;
  filter: alpha(opacity=20);
}
.close:hover,
.close:focus {
  color: #000;
  text-decoration: none;
  cursor: pointer;
  opacity: 0.5;
  filter: alpha(opacity=50);
}
button.close {
  padding: 0;
  cursor: pointer;
  background: transparent;
  border: 0;
  -webkit-appearance: none;
}
.modal-open {
  overflow: hidden;
}
.modal {
  display: none;
  overflow: hidden;
  position: fixed;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
  z-index: 1050;
  -webkit-overflow-scrolling: touch;
  outline: 0;
}
.modal.fade .modal-dialog {
  -webkit-transform: translate(0, -25%);
  -ms-transform: translate(0, -25%);
  -o-transform: translate(0, -25%);
  transform: translate(0, -25%);
  -webkit-transition: -webkit-transform 0.3s ease-out;
  -moz-transition: -moz-transform 0.3s ease-out;
  -o-transition: -o-transform 0.3s ease-out;
  transition: transform 0.3s ease-out;
}
.modal.in .modal-dialog {
  -webkit-transform: translate(0, 0);
  -ms-transform: translate(0, 0);
  -o-transform: translate(0, 0);
  transform: translate(0, 0);
}
.modal-open .modal {
  overflow-x: hidden;
  overflow-y: auto;
}
.modal-dialog {
  position: relative;
  width: auto;
  margin: 10px;
}
.modal-content {
  position: relative;
  background-color: #fff;
  border: 1px solid #999;
  border: 1px solid rgba(0, 0, 0, 0.2);
  border-radius: 3px;
  -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);
  box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);
  background-clip: padding-box;
  outline: 0;
}
.modal-backdrop {
  position: fixed;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
  z-index: 1040;
  background-color: #000;
}
.modal-backdrop.fade {
  opacity: 0;
  filter: alpha(opacity=0);
}
.modal-backdrop.in {
  opacity: 0.5;
  filter: alpha(opacity=50);
}
.modal-header {
  padding: 15px;
  border-bottom: 1px solid #e5e5e5;
}
.modal-header .close {
  margin-top: -2px;
}
.modal-title {
  margin: 0;
  line-height: 1.42857143;
}
.modal-body {
  position: relative;
  padding: 15px;
}
.modal-footer {
  padding: 15px;
  text-align: right;
  border-top: 1px solid #e5e5e5;
}
.modal-footer .btn + .btn {
  margin-left: 5px;
  margin-bottom: 0;
}
.modal-footer .btn-group .btn + .btn {
  margin-left: -1px;
}
.modal-footer .btn-block + .btn-block {
  margin-left: 0;
}
.modal-scrollbar-measure {
  position: absolute;
  top: -9999px;
  width: 50px;
  height: 50px;
  overflow: scroll;
}
@media (min-width: 768px) {
  .modal-dialog {
    width: 600px;
    margin: 30px auto;
  }
  .modal-content {
    -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);
    box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);
  }
  .modal-sm {
    width: 300px;
  }
}
@media (min-width: 992px) {
  .modal-lg {
    width: 900px;
  }
}
.tooltip {
  position: absolute;
  z-index: 1070;
  display: block;
  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
  font-style: normal;
  font-weight: normal;
  letter-spacing: normal;
  line-break: auto;
  line-height: 1.42857143;
  text-align: left;
  text-align: start;
  text-decoration: none;
  text-shadow: none;
  text-transform: none;
  white-space: normal;
  word-break: normal;
  word-spacing: normal;
  word-wrap: normal;
  font-size: 12px;
  opacity: 0;
  filter: alpha(opacity=0);
}
.tooltip.in {
  opacity: 0.9;
  filter: alpha(opacity=90);
}
.tooltip.top {
  margin-top: -3px;
  padding: 5px 0;
}
.tooltip.right {
  margin-left: 3px;
  padding: 0 5px;
}
.tooltip.bottom {
  margin-top: 3px;
  padding: 5px 0;
}
.tooltip.left {
  margin-left: -3px;
  padding: 0 5px;
}
.tooltip-inner {
  max-width: 200px;
  padding: 3px 8px;
  color: #fff;
  text-align: center;
  background-color: #000;
  border-radius: 2px;
}
.tooltip-arrow {
  position: absolute;
  width: 0;
  height: 0;
  border-color: transparent;
  border-style: solid;
}
.tooltip.top .tooltip-arrow {
  bottom: 0;
  left: 50%;
  margin-left: -5px;
  border-width: 5px 5px 0;
  border-top-color: #000;
}
.tooltip.top-left .tooltip-arrow {
  bottom: 0;
  right: 5px;
  margin-bottom: -5px;
  border-width: 5px 5px 0;
  border-top-color: #000;
}
.tooltip.top-right .tooltip-arrow {
  bottom: 0;
  left: 5px;
  margin-bottom: -5px;
  border-width: 5px 5px 0;
  border-top-color: #000;
}
.tooltip.right .tooltip-arrow {
  top: 50%;
  left: 0;
  margin-top: -5px;
  border-width: 5px 5px 5px 0;
  border-right-color: #000;
}
.tooltip.left .tooltip-arrow {
  top: 50%;
  right: 0;
  margin-top: -5px;
  border-width: 5px 0 5px 5px;
  border-left-color: #000;
}
.tooltip.bottom .tooltip-arrow {
  top: 0;
  left: 50%;
  margin-left: -5px;
  border-width: 0 5px 5px;
  border-bottom-color: #000;
}
.tooltip.bottom-left .tooltip-arrow {
  top: 0;
  right: 5px;
  margin-top: -5px;
  border-width: 0 5px 5px;
  border-bottom-color: #000;
}
.tooltip.bottom-right .tooltip-arrow {
  top: 0;
  left: 5px;
  margin-top: -5px;
  border-width: 0 5px 5px;
  border-bottom-color: #000;
}
.popover {
  position: absolute;
  top: 0;
  left: 0;
  z-index: 1060;
  display: none;
  max-width: 276px;
  padding: 1px;
  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
  font-style: normal;
  font-weight: normal;
  letter-spacing: normal;
  line-break: auto;
  line-height: 1.42857143;
  text-align: left;
  text-align: start;
  text-decoration: none;
  text-shadow: none;
  text-transform: none;
  white-space: normal;
  word-break: normal;
  word-spacing: normal;
  word-wrap: normal;
  font-size: 13px;
  background-color: #fff;
  background-clip: padding-box;
  border: 1px solid #ccc;
  border: 1px solid rgba(0, 0, 0, 0.2);
  border-radius: 3px;
  -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
  box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
}
.popover.top {
  margin-top: -10px;
}
.popover.right {
  margin-left: 10px;
}
.popover.bottom {
  margin-top: 10px;
}
.popover.left {
  margin-left: -10px;
}
.popover-title {
  margin: 0;
  padding: 8px 14px;
  font-size: 13px;
  background-color: #f7f7f7;
  border-bottom: 1px solid #ebebeb;
  border-radius: 2px 2px 0 0;
}
.popover-content {
  padding: 9px 14px;
}
.popover > .arrow,
.popover > .arrow:after {
  position: absolute;
  display: block;
  width: 0;
  height: 0;
  border-color: transparent;
  border-style: solid;
}
.popover > .arrow {
  border-width: 11px;
}
.popover > .arrow:after {
  border-width: 10px;
  content: "";
}
.popover.top > .arrow {
  left: 50%;
  margin-left: -11px;
  border-bottom-width: 0;
  border-top-color: #999999;
  border-top-color: rgba(0, 0, 0, 0.25);
  bottom: -11px;
}
.popover.top > .arrow:after {
  content: " ";
  bottom: 1px;
  margin-left: -10px;
  border-bottom-width: 0;
  border-top-color: #fff;
}
.popover.right > .arrow {
  top: 50%;
  left: -11px;
  margin-top: -11px;
  border-left-width: 0;
  border-right-color: #999999;
  border-right-color: rgba(0, 0, 0, 0.25);
}
.popover.right > .arrow:after {
  content: " ";
  left: 1px;
  bottom: -10px;
  border-left-width: 0;
  border-right-color: #fff;
}
.popover.bottom > .arrow {
  left: 50%;
  margin-left: -11px;
  border-top-width: 0;
  border-bottom-color: #999999;
  border-bottom-color: rgba(0, 0, 0, 0.25);
  top: -11px;
}
.popover.bottom > .arrow:after {
  content: " ";
  top: 1px;
  margin-left: -10px;
  border-top-width: 0;
  border-bottom-color: #fff;
}
.popover.left > .arrow {
  top: 50%;
  right: -11px;
  margin-top: -11px;
  border-right-width: 0;
  border-left-color: #999999;
  border-left-color: rgba(0, 0, 0, 0.25);
}
.popover.left > .arrow:after {
  content: " ";
  right: 1px;
  border-right-width: 0;
  border-left-color: #fff;
  bottom: -10px;
}
.carousel {
  position: relative;
}
.carousel-inner {
  position: relative;
  overflow: hidden;
  width: 100%;
}
.carousel-inner > .item {
  display: none;
  position: relative;
  -webkit-transition: 0.6s ease-in-out left;
  -o-transition: 0.6s ease-in-out left;
  transition: 0.6s ease-in-out left;
}
.carousel-inner > .item > img,
.carousel-inner > .item > a > img {
  line-height: 1;
}
@media all and (transform-3d), (-webkit-transform-3d) {
  .carousel-inner > .item {
    -webkit-transition: -webkit-transform 0.6s ease-in-out;
    -moz-transition: -moz-transform 0.6s ease-in-out;
    -o-transition: -o-transform 0.6s ease-in-out;
    transition: transform 0.6s ease-in-out;
    -webkit-backface-visibility: hidden;
    -moz-backface-visibility: hidden;
    backface-visibility: hidden;
    -webkit-perspective: 1000px;
    -moz-perspective: 1000px;
    perspective: 1000px;
  }
  .carousel-inner > .item.next,
  .carousel-inner > .item.active.right {
    -webkit-transform: translate3d(100%, 0, 0);
    transform: translate3d(100%, 0, 0);
    left: 0;
  }
  .carousel-inner > .item.prev,
  .carousel-inner > .item.active.left {
    -webkit-transform: translate3d(-100%, 0, 0);
    transform: translate3d(-100%, 0, 0);
    left: 0;
  }
  .carousel-inner > .item.next.left,
  .carousel-inner > .item.prev.right,
  .carousel-inner > .item.active {
    -webkit-transform: translate3d(0, 0, 0);
    transform: translate3d(0, 0, 0);
    left: 0;
  }
}
.carousel-inner > .active,
.carousel-inner > .next,
.carousel-inner > .prev {
  display: block;
}
.carousel-inner > .active {
  left: 0;
}
.carousel-inner > .next,
.carousel-inner > .prev {
  position: absolute;
  top: 0;
  width: 100%;
}
.carousel-inner > .next {
  left: 100%;
}
.carousel-inner > .prev {
  left: -100%;
}
.carousel-inner > .next.left,
.carousel-inner > .prev.right {
  left: 0;
}
.carousel-inner > .active.left {
  left: -100%;
}
.carousel-inner > .active.right {
  left: 100%;
}
.carousel-control {
  position: absolute;
  top: 0;
  left: 0;
  bottom: 0;
  width: 15%;
  opacity: 0.5;
  filter: alpha(opacity=50);
  font-size: 20px;
  color: #fff;
  text-align: center;
  text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6);
  background-color: rgba(0, 0, 0, 0);
}
.carousel-control.left {
  background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);
  background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);
  background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);
  background-repeat: repeat-x;
  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);
}
.carousel-control.right {
  left: auto;
  right: 0;
  background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);
  background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);
  background-image: linear-gradient(to right, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);
  background-repeat: repeat-x;
  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);
}
.carousel-control:hover,
.carousel-control:focus {
  outline: 0;
  color: #fff;
  text-decoration: none;
  opacity: 0.9;
  filter: alpha(opacity=90);
}
.carousel-control .icon-prev,
.carousel-control .icon-next,
.carousel-control .glyphicon-chevron-left,
.carousel-control .glyphicon-chevron-right {
  position: absolute;
  top: 50%;
  margin-top: -10px;
  z-index: 5;
  display: inline-block;
}
.carousel-control .icon-prev,
.carousel-control .glyphicon-chevron-left {
  left: 50%;
  margin-left: -10px;
}
.carousel-control .icon-next,
.carousel-control .glyphicon-chevron-right {
  right: 50%;
  margin-right: -10px;
}
.carousel-control .icon-prev,
.carousel-control .icon-next {
  width: 20px;
  height: 20px;
  line-height: 1;
  font-family: serif;
}
.carousel-control .icon-prev:before {
  content: '\2039';
}
.carousel-control .icon-next:before {
  content: '\203a';
}
.carousel-indicators {
  position: absolute;
  bottom: 10px;
  left: 50%;
  z-index: 15;
  width: 60%;
  margin-left: -30%;
  padding-left: 0;
  list-style: none;
  text-align: center;
}
.carousel-indicators li {
  display: inline-block;
  width: 10px;
  height: 10px;
  margin: 1px;
  text-indent: -999px;
  border: 1px solid #fff;
  border-radius: 10px;
  cursor: pointer;
  background-color: #000 \9;
  background-color: rgba(0, 0, 0, 0);
}
.carousel-indicators .active {
  margin: 0;
  width: 12px;
  height: 12px;
  background-color: #fff;
}
.carousel-caption {
  position: absolute;
  left: 15%;
  right: 15%;
  bottom: 20px;
  z-index: 10;
  padding-top: 20px;
  padding-bottom: 20px;
  color: #fff;
  text-align: center;
  text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6);
}
.carousel-caption .btn {
  text-shadow: none;
}
@media screen and (min-width: 768px) {
  .carousel-control .glyphicon-chevron-left,
  .carousel-control .glyphicon-chevron-right,
  .carousel-control .icon-prev,
  .carousel-control .icon-next {
    width: 30px;
    height: 30px;
    margin-top: -10px;
    font-size: 30px;
  }
  .carousel-control .glyphicon-chevron-left,
  .carousel-control .icon-prev {
    margin-left: -10px;
  }
  .carousel-control .glyphicon-chevron-right,
  .carousel-control .icon-next {
    margin-right: -10px;
  }
  .carousel-caption {
    left: 20%;
    right: 20%;
    padding-bottom: 30px;
  }
  .carousel-indicators {
    bottom: 20px;
  }
}
.clearfix:before,
.clearfix:after,
.dl-horizontal dd:before,
.dl-horizontal dd:after,
.container:before,
.container:after,
.container-fluid:before,
.container-fluid:after,
.row:before,
.row:after,
.form-horizontal .form-group:before,
.form-horizontal .form-group:after,
.btn-toolbar:before,
.btn-toolbar:after,
.btn-group-vertical > .btn-group:before,
.btn-group-vertical > .btn-group:after,
.nav:before,
.nav:after,
.navbar:before,
.navbar:after,
.navbar-header:before,
.navbar-header:after,
.navbar-collapse:before,
.navbar-collapse:after,
.pager:before,
.pager:after,
.panel-body:before,
.panel-body:after,
.modal-header:before,
.modal-header:after,
.modal-footer:before,
.modal-footer:after,
.item_buttons:before,
.item_buttons:after {
  content: " ";
  display: table;
}
.clearfix:after,
.dl-horizontal dd:after,
.container:after,
.container-fluid:after,
.row:after,
.form-horizontal .form-group:after,
.btn-toolbar:after,
.btn-group-vertical > .btn-group:after,
.nav:after,
.navbar:after,
.navbar-header:after,
.navbar-collapse:after,
.pager:after,
.panel-body:after,
.modal-header:after,
.modal-footer:after,
.item_buttons:after {
  clear: both;
}
.center-block {
  display: block;
  margin-left: auto;
  margin-right: auto;
}
.pull-right {
  float: right !important;
}
.pull-left {
  float: left !important;
}
.hide {
  display: none !important;
}
.show {
  display: block !important;
}
.invisible {
  visibility: hidden;
}
.text-hide {
  font: 0/0 a;
  color: transparent;
  text-shadow: none;
  background-color: transparent;
  border: 0;
}
.hidden {
  display: none !important;
}
.affix {
  position: fixed;
}
@-ms-viewport {
  width: device-width;
}
.visible-xs,
.visible-sm,
.visible-md,
.visible-lg {
  display: none !important;
}
.visible-xs-block,
.visible-xs-inline,
.visible-xs-inline-block,
.visible-sm-block,
.visible-sm-inline,
.visible-sm-inline-block,
.visible-md-block,
.visible-md-inline,
.visible-md-inline-block,
.visible-lg-block,
.visible-lg-inline,
.visible-lg-inline-block {
  display: none !important;
}
@media (max-width: 767px) {
  .visible-xs {
    display: block !important;
  }
  table.visible-xs {
    display: table !important;
  }
  tr.visible-xs {
    display: table-row !important;
  }
  th.visible-xs,
  td.visible-xs {
    display: table-cell !important;
  }
}
@media (max-width: 767px) {
  .visible-xs-block {
    display: block !important;
  }
}
@media (max-width: 767px) {
  .visible-xs-inline {
    display: inline !important;
  }
}
@media (max-width: 767px) {
  .visible-xs-inline-block {
    display: inline-block !important;
  }
}
@media (min-width: 768px) and (max-width: 991px) {
  .visible-sm {
    display: block !important;
  }
  table.visible-sm {
    display: table !important;
  }
  tr.visible-sm {
    display: table-row !important;
  }
  th.visible-sm,
  td.visible-sm {
    display: table-cell !important;
  }
}
@media (min-width: 768px) and (max-width: 991px) {
  .visible-sm-block {
    display: block !important;
  }
}
@media (min-width: 768px) and (max-width: 991px) {
  .visible-sm-inline {
    display: inline !important;
  }
}
@media (min-width: 768px) and (max-width: 991px) {
  .visible-sm-inline-block {
    display: inline-block !important;
  }
}
@media (min-width: 992px) and (max-width: 1199px) {
  .visible-md {
    display: block !important;
  }
  table.visible-md {
    display: table !important;
  }
  tr.visible-md {
    display: table-row !important;
  }
  th.visible-md,
  td.visible-md {
    display: table-cell !important;
  }
}
@media (min-width: 992px) and (max-width: 1199px) {
  .visible-md-block {
    display: block !important;
  }
}
@media (min-width: 992px) and (max-width: 1199px) {
  .visible-md-inline {
    display: inline !important;
  }
}
@media (min-width: 992px) and (max-width: 1199px) {
  .visible-md-inline-block {
    display: inline-block !important;
  }
}
@media (min-width: 1200px) {
  .visible-lg {
    display: block !important;
  }
  table.visible-lg {
    display: table !important;
  }
  tr.visible-lg {
    display: table-row !important;
  }
  th.visible-lg,
  td.visible-lg {
    display: table-cell !important;
  }
}
@media (min-width: 1200px) {
  .visible-lg-block {
    display: block !important;
  }
}
@media (min-width: 1200px) {
  .visible-lg-inline {
    display: inline !important;
  }
}
@media (min-width: 1200px) {
  .visible-lg-inline-block {
    display: inline-block !important;
  }
}
@media (max-width: 767px) {
  .hidden-xs {
    display: none !important;
  }
}
@media (min-width: 768px) and (max-width: 991px) {
  .hidden-sm {
    display: none !important;
  }
}
@media (min-width: 992px) and (max-width: 1199px) {
  .hidden-md {
    display: none !important;
  }
}
@media (min-width: 1200px) {
  .hidden-lg {
    display: none !important;
  }
}
.visible-print {
  display: none !important;
}
@media print {
  .visible-print {
    display: block !important;
  }
  table.visible-print {
    display: table !important;
  }
  tr.visible-print {
    display: table-row !important;
  }
  th.visible-print,
  td.visible-print {
    display: table-cell !important;
  }
}
.visible-print-block {
  display: none !important;
}
@media print {
  .visible-print-block {
    display: block !important;
  }
}
.visible-print-inline {
  display: none !important;
}
@media print {
  .visible-print-inline {
    display: inline !important;
  }
}
.visible-print-inline-block {
  display: none !important;
}
@media print {
  .visible-print-inline-block {
    display: inline-block !important;
  }
}
@media print {
  .hidden-print {
    display: none !important;
  }
}
/*!
*
* Font Awesome
*
*/
/*!
 *  Font Awesome 4.2.0 by @davegandy - http://fontawesome.io - @fontawesome
 *  License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License)
 */
/* FONT PATH
 * -------------------------- */
@font-face {
  font-family: 'FontAwesome';
  src: url('../components/font-awesome/fonts/fontawesome-webfont.eot?v=4.2.0');
  src: url('../components/font-awesome/fonts/fontawesome-webfont.eot?#iefix&v=4.2.0') format('embedded-opentype'), url('../components/font-awesome/fonts/fontawesome-webfont.woff?v=4.2.0') format('woff'), url('../components/font-awesome/fonts/fontawesome-webfont.ttf?v=4.2.0') format('truetype'), url('../components/font-awesome/fonts/fontawesome-webfont.svg?v=4.2.0#fontawesomeregular') format('svg');
  font-weight: normal;
  font-style: normal;
}
.fa {
  display: inline-block;
  font: normal normal normal 14px/1 FontAwesome;
  font-size: inherit;
  text-rendering: auto;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}
/* makes the font 33% larger relative to the icon container */
.fa-lg {
  font-size: 1.33333333em;
  line-height: 0.75em;
  vertical-align: -15%;
}
.fa-2x {
  font-size: 2em;
}
.fa-3x {
  font-size: 3em;
}
.fa-4x {
  font-size: 4em;
}
.fa-5x {
  font-size: 5em;
}
.fa-fw {
  width: 1.28571429em;
  text-align: center;
}
.fa-ul {
  padding-left: 0;
  margin-left: 2.14285714em;
  list-style-type: none;
}
.fa-ul > li {
  position: relative;
}
.fa-li {
  position: absolute;
  left: -2.14285714em;
  width: 2.14285714em;
  top: 0.14285714em;
  text-align: center;
}
.fa-li.fa-lg {
  left: -1.85714286em;
}
.fa-border {
  padding: .2em .25em .15em;
  border: solid 0.08em #eee;
  border-radius: .1em;
}
.pull-right {
  float: right;
}
.pull-left {
  float: left;
}
.fa.pull-left {
  margin-right: .3em;
}
.fa.pull-right {
  margin-left: .3em;
}
.fa-spin {
  -webkit-animation: fa-spin 2s infinite linear;
  animation: fa-spin 2s infinite linear;
}
@-webkit-keyframes fa-spin {
  0% {
    -webkit-transform: rotate(0deg);
    transform: rotate(0deg);
  }
  100% {
    -webkit-transform: rotate(359deg);
    transform: rotate(359deg);
  }
}
@keyframes fa-spin {
  0% {
    -webkit-transform: rotate(0deg);
    transform: rotate(0deg);
  }
  100% {
    -webkit-transform: rotate(359deg);
    transform: rotate(359deg);
  }
}
.fa-rotate-90 {
  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1);
  -webkit-transform: rotate(90deg);
  -ms-transform: rotate(90deg);
  transform: rotate(90deg);
}
.fa-rotate-180 {
  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2);
  -webkit-transform: rotate(180deg);
  -ms-transform: rotate(180deg);
  transform: rotate(180deg);
}
.fa-rotate-270 {
  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3);
  -webkit-transform: rotate(270deg);
  -ms-transform: rotate(270deg);
  transform: rotate(270deg);
}
.fa-flip-horizontal {
  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1);
  -webkit-transform: scale(-1, 1);
  -ms-transform: scale(-1, 1);
  transform: scale(-1, 1);
}
.fa-flip-vertical {
  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1);
  -webkit-transform: scale(1, -1);
  -ms-transform: scale(1, -1);
  transform: scale(1, -1);
}
:root .fa-rotate-90,
:root .fa-rotate-180,
:root .fa-rotate-270,
:root .fa-flip-horizontal,
:root .fa-flip-vertical {
  filter: none;
}
.fa-stack {
  position: relative;
  display: inline-block;
  width: 2em;
  height: 2em;
  line-height: 2em;
  vertical-align: middle;
}
.fa-stack-1x,
.fa-stack-2x {
  position: absolute;
  left: 0;
  width: 100%;
  text-align: center;
}
.fa-stack-1x {
  line-height: inherit;
}
.fa-stack-2x {
  font-size: 2em;
}
.fa-inverse {
  color: #fff;
}
/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen
   readers do not read off random characters that represent icons */
.fa-glass:before {
  content: "\f000";
}
.fa-music:before {
  content: "\f001";
}
.fa-search:before {
  content: "\f002";
}
.fa-envelope-o:before {
  content: "\f003";
}
.fa-heart:before {
  content: "\f004";
}
.fa-star:before {
  content: "\f005";
}
.fa-star-o:before {
  content: "\f006";
}
.fa-user:before {
  content: "\f007";
}
.fa-film:before {
  content: "\f008";
}
.fa-th-large:before {
  content: "\f009";
}
.fa-th:before {
  content: "\f00a";
}
.fa-th-list:before {
  content: "\f00b";
}
.fa-check:before {
  content: "\f00c";
}
.fa-remove:before,
.fa-close:before,
.fa-times:before {
  content: "\f00d";
}
.fa-search-plus:before {
  content: "\f00e";
}
.fa-search-minus:before {
  content: "\f010";
}
.fa-power-off:before {
  content: "\f011";
}
.fa-signal:before {
  content: "\f012";
}
.fa-gear:before,
.fa-cog:before {
  content: "\f013";
}
.fa-trash-o:before {
  content: "\f014";
}
.fa-home:before {
  content: "\f015";
}
.fa-file-o:before {
  content: "\f016";
}
.fa-clock-o:before {
  content: "\f017";
}
.fa-road:before {
  content: "\f018";
}
.fa-download:before {
  content: "\f019";
}
.fa-arrow-circle-o-down:before {
  content: "\f01a";
}
.fa-arrow-circle-o-up:before {
  content: "\f01b";
}
.fa-inbox:before {
  content: "\f01c";
}
.fa-play-circle-o:before {
  content: "\f01d";
}
.fa-rotate-right:before,
.fa-repeat:before {
  content: "\f01e";
}
.fa-refresh:before {
  content: "\f021";
}
.fa-list-alt:before {
  content: "\f022";
}
.fa-lock:before {
  content: "\f023";
}
.fa-flag:before {
  content: "\f024";
}
.fa-headphones:before {
  content: "\f025";
}
.fa-volume-off:before {
  content: "\f026";
}
.fa-volume-down:before {
  content: "\f027";
}
.fa-volume-up:before {
  content: "\f028";
}
.fa-qrcode:before {
  content: "\f029";
}
.fa-barcode:before {
  content: "\f02a";
}
.fa-tag:before {
  content: "\f02b";
}
.fa-tags:before {
  content: "\f02c";
}
.fa-book:before {
  content: "\f02d";
}
.fa-bookmark:before {
  content: "\f02e";
}
.fa-print:before {
  content: "\f02f";
}
.fa-camera:before {
  content: "\f030";
}
.fa-font:before {
  content: "\f031";
}
.fa-bold:before {
  content: "\f032";
}
.fa-italic:before {
  content: "\f033";
}
.fa-text-height:before {
  content: "\f034";
}
.fa-text-width:before {
  content: "\f035";
}
.fa-align-left:before {
  content: "\f036";
}
.fa-align-center:before {
  content: "\f037";
}
.fa-align-right:before {
  content: "\f038";
}
.fa-align-justify:before {
  content: "\f039";
}
.fa-list:before {
  content: "\f03a";
}
.fa-dedent:before,
.fa-outdent:before {
  content: "\f03b";
}
.fa-indent:before {
  content: "\f03c";
}
.fa-video-camera:before {
  content: "\f03d";
}
.fa-photo:before,
.fa-image:before,
.fa-picture-o:before {
  content: "\f03e";
}
.fa-pencil:before {
  content: "\f040";
}
.fa-map-marker:before {
  content: "\f041";
}
.fa-adjust:before {
  content: "\f042";
}
.fa-tint:before {
  content: "\f043";
}
.fa-edit:before,
.fa-pencil-square-o:before {
  content: "\f044";
}
.fa-share-square-o:before {
  content: "\f045";
}
.fa-check-square-o:before {
  content: "\f046";
}
.fa-arrows:before {
  content: "\f047";
}
.fa-step-backward:before {
  content: "\f048";
}
.fa-fast-backward:before {
  content: "\f049";
}
.fa-backward:before {
  content: "\f04a";
}
.fa-play:before {
  content: "\f04b";
}
.fa-pause:before {
  content: "\f04c";
}
.fa-stop:before {
  content: "\f04d";
}
.fa-forward:before {
  content: "\f04e";
}
.fa-fast-forward:before {
  content: "\f050";
}
.fa-step-forward:before {
  content: "\f051";
}
.fa-eject:before {
  content: "\f052";
}
.fa-chevron-left:before {
  content: "\f053";
}
.fa-chevron-right:before {
  content: "\f054";
}
.fa-plus-circle:before {
  content: "\f055";
}
.fa-minus-circle:before {
  content: "\f056";
}
.fa-times-circle:before {
  content: "\f057";
}
.fa-check-circle:before {
  content: "\f058";
}
.fa-question-circle:before {
  content: "\f059";
}
.fa-info-circle:before {
  content: "\f05a";
}
.fa-crosshairs:before {
  content: "\f05b";
}
.fa-times-circle-o:before {
  content: "\f05c";
}
.fa-check-circle-o:before {
  content: "\f05d";
}
.fa-ban:before {
  content: "\f05e";
}
.fa-arrow-left:before {
  content: "\f060";
}
.fa-arrow-right:before {
  content: "\f061";
}
.fa-arrow-up:before {
  content: "\f062";
}
.fa-arrow-down:before {
  content: "\f063";
}
.fa-mail-forward:before,
.fa-share:before {
  content: "\f064";
}
.fa-expand:before {
  content: "\f065";
}
.fa-compress:before {
  content: "\f066";
}
.fa-plus:before {
  content: "\f067";
}
.fa-minus:before {
  content: "\f068";
}
.fa-asterisk:before {
  content: "\f069";
}
.fa-exclamation-circle:before {
  content: "\f06a";
}
.fa-gift:before {
  content: "\f06b";
}
.fa-leaf:before {
  content: "\f06c";
}
.fa-fire:before {
  content: "\f06d";
}
.fa-eye:before {
  content: "\f06e";
}
.fa-eye-slash:before {
  content: "\f070";
}
.fa-warning:before,
.fa-exclamation-triangle:before {
  content: "\f071";
}
.fa-plane:before {
  content: "\f072";
}
.fa-calendar:before {
  content: "\f073";
}
.fa-random:before {
  content: "\f074";
}
.fa-comment:before {
  content: "\f075";
}
.fa-magnet:before {
  content: "\f076";
}
.fa-chevron-up:before {
  content: "\f077";
}
.fa-chevron-down:before {
  content: "\f078";
}
.fa-retweet:before {
  content: "\f079";
}
.fa-shopping-cart:before {
  content: "\f07a";
}
.fa-folder:before {
  content: "\f07b";
}
.fa-folder-open:before {
  content: "\f07c";
}
.fa-arrows-v:before {
  content: "\f07d";
}
.fa-arrows-h:before {
  content: "\f07e";
}
.fa-bar-chart-o:before,
.fa-bar-chart:before {
  content: "\f080";
}
.fa-twitter-square:before {
  content: "\f081";
}
.fa-facebook-square:before {
  content: "\f082";
}
.fa-camera-retro:before {
  content: "\f083";
}
.fa-key:before {
  content: "\f084";
}
.fa-gears:before,
.fa-cogs:before {
  content: "\f085";
}
.fa-comments:before {
  content: "\f086";
}
.fa-thumbs-o-up:before {
  content: "\f087";
}
.fa-thumbs-o-down:before {
  content: "\f088";
}
.fa-star-half:before {
  content: "\f089";
}
.fa-heart-o:before {
  content: "\f08a";
}
.fa-sign-out:before {
  content: "\f08b";
}
.fa-linkedin-square:before {
  content: "\f08c";
}
.fa-thumb-tack:before {
  content: "\f08d";
}
.fa-external-link:before {
  content: "\f08e";
}
.fa-sign-in:before {
  content: "\f090";
}
.fa-trophy:before {
  content: "\f091";
}
.fa-github-square:before {
  content: "\f092";
}
.fa-upload:before {
  content: "\f093";
}
.fa-lemon-o:before {
  content: "\f094";
}
.fa-phone:before {
  content: "\f095";
}
.fa-square-o:before {
  content: "\f096";
}
.fa-bookmark-o:before {
  content: "\f097";
}
.fa-phone-square:before {
  content: "\f098";
}
.fa-twitter:before {
  content: "\f099";
}
.fa-facebook:before {
  content: "\f09a";
}
.fa-github:before {
  content: "\f09b";
}
.fa-unlock:before {
  content: "\f09c";
}
.fa-credit-card:before {
  content: "\f09d";
}
.fa-rss:before {
  content: "\f09e";
}
.fa-hdd-o:before {
  content: "\f0a0";
}
.fa-bullhorn:before {
  content: "\f0a1";
}
.fa-bell:before {
  content: "\f0f3";
}
.fa-certificate:before {
  content: "\f0a3";
}
.fa-hand-o-right:before {
  content: "\f0a4";
}
.fa-hand-o-left:before {
  content: "\f0a5";
}
.fa-hand-o-up:before {
  content: "\f0a6";
}
.fa-hand-o-down:before {
  content: "\f0a7";
}
.fa-arrow-circle-left:before {
  content: "\f0a8";
}
.fa-arrow-circle-right:before {
  content: "\f0a9";
}
.fa-arrow-circle-up:before {
  content: "\f0aa";
}
.fa-arrow-circle-down:before {
  content: "\f0ab";
}
.fa-globe:before {
  content: "\f0ac";
}
.fa-wrench:before {
  content: "\f0ad";
}
.fa-tasks:before {
  content: "\f0ae";
}
.fa-filter:before {
  content: "\f0b0";
}
.fa-briefcase:before {
  content: "\f0b1";
}
.fa-arrows-alt:before {
  content: "\f0b2";
}
.fa-group:before,
.fa-users:before {
  content: "\f0c0";
}
.fa-chain:before,
.fa-link:before {
  content: "\f0c1";
}
.fa-cloud:before {
  content: "\f0c2";
}
.fa-flask:before {
  content: "\f0c3";
}
.fa-cut:before,
.fa-scissors:before {
  content: "\f0c4";
}
.fa-copy:before,
.fa-files-o:before {
  content: "\f0c5";
}
.fa-paperclip:before {
  content: "\f0c6";
}
.fa-save:before,
.fa-floppy-o:before {
  content: "\f0c7";
}
.fa-square:before {
  content: "\f0c8";
}
.fa-navicon:before,
.fa-reorder:before,
.fa-bars:before {
  content: "\f0c9";
}
.fa-list-ul:before {
  content: "\f0ca";
}
.fa-list-ol:before {
  content: "\f0cb";
}
.fa-strikethrough:before {
  content: "\f0cc";
}
.fa-underline:before {
  content: "\f0cd";
}
.fa-table:before {
  content: "\f0ce";
}
.fa-magic:before {
  content: "\f0d0";
}
.fa-truck:before {
  content: "\f0d1";
}
.fa-pinterest:before {
  content: "\f0d2";
}
.fa-pinterest-square:before {
  content: "\f0d3";
}
.fa-google-plus-square:before {
  content: "\f0d4";
}
.fa-google-plus:before {
  content: "\f0d5";
}
.fa-money:before {
  content: "\f0d6";
}
.fa-caret-down:before {
  content: "\f0d7";
}
.fa-caret-up:before {
  content: "\f0d8";
}
.fa-caret-left:before {
  content: "\f0d9";
}
.fa-caret-right:before {
  content: "\f0da";
}
.fa-columns:before {
  content: "\f0db";
}
.fa-unsorted:before,
.fa-sort:before {
  content: "\f0dc";
}
.fa-sort-down:before,
.fa-sort-desc:before {
  content: "\f0dd";
}
.fa-sort-up:before,
.fa-sort-asc:before {
  content: "\f0de";
}
.fa-envelope:before {
  content: "\f0e0";
}
.fa-linkedin:before {
  content: "\f0e1";
}
.fa-rotate-left:before,
.fa-undo:before {
  content: "\f0e2";
}
.fa-legal:before,
.fa-gavel:before {
  content: "\f0e3";
}
.fa-dashboard:before,
.fa-tachometer:before {
  content: "\f0e4";
}
.fa-comment-o:before {
  content: "\f0e5";
}
.fa-comments-o:before {
  content: "\f0e6";
}
.fa-flash:before,
.fa-bolt:before {
  content: "\f0e7";
}
.fa-sitemap:before {
  content: "\f0e8";
}
.fa-umbrella:before {
  content: "\f0e9";
}
.fa-paste:before,
.fa-clipboard:before {
  content: "\f0ea";
}
.fa-lightbulb-o:before {
  content: "\f0eb";
}
.fa-exchange:before {
  content: "\f0ec";
}
.fa-cloud-download:before {
  content: "\f0ed";
}
.fa-cloud-upload:before {
  content: "\f0ee";
}
.fa-user-md:before {
  content: "\f0f0";
}
.fa-stethoscope:before {
  content: "\f0f1";
}
.fa-suitcase:before {
  content: "\f0f2";
}
.fa-bell-o:before {
  content: "\f0a2";
}
.fa-coffee:before {
  content: "\f0f4";
}
.fa-cutlery:before {
  content: "\f0f5";
}
.fa-file-text-o:before {
  content: "\f0f6";
}
.fa-building-o:before {
  content: "\f0f7";
}
.fa-hospital-o:before {
  content: "\f0f8";
}
.fa-ambulance:before {
  content: "\f0f9";
}
.fa-medkit:before {
  content: "\f0fa";
}
.fa-fighter-jet:before {
  content: "\f0fb";
}
.fa-beer:before {
  content: "\f0fc";
}
.fa-h-square:before {
  content: "\f0fd";
}
.fa-plus-square:before {
  content: "\f0fe";
}
.fa-angle-double-left:before {
  content: "\f100";
}
.fa-angle-double-right:before {
  content: "\f101";
}
.fa-angle-double-up:before {
  content: "\f102";
}
.fa-angle-double-down:before {
  content: "\f103";
}
.fa-angle-left:before {
  content: "\f104";
}
.fa-angle-right:before {
  content: "\f105";
}
.fa-angle-up:before {
  content: "\f106";
}
.fa-angle-down:before {
  content: "\f107";
}
.fa-desktop:before {
  content: "\f108";
}
.fa-laptop:before {
  content: "\f109";
}
.fa-tablet:before {
  content: "\f10a";
}
.fa-mobile-phone:before,
.fa-mobile:before {
  content: "\f10b";
}
.fa-circle-o:before {
  content: "\f10c";
}
.fa-quote-left:before {
  content: "\f10d";
}
.fa-quote-right:before {
  content: "\f10e";
}
.fa-spinner:before {
  content: "\f110";
}
.fa-circle:before {
  content: "\f111";
}
.fa-mail-reply:before,
.fa-reply:before {
  content: "\f112";
}
.fa-github-alt:before {
  content: "\f113";
}
.fa-folder-o:before {
  content: "\f114";
}
.fa-folder-open-o:before {
  content: "\f115";
}
.fa-smile-o:before {
  content: "\f118";
}
.fa-frown-o:before {
  content: "\f119";
}
.fa-meh-o:before {
  content: "\f11a";
}
.fa-gamepad:before {
  content: "\f11b";
}
.fa-keyboard-o:before {
  content: "\f11c";
}
.fa-flag-o:before {
  content: "\f11d";
}
.fa-flag-checkered:before {
  content: "\f11e";
}
.fa-terminal:before {
  content: "\f120";
}
.fa-code:before {
  content: "\f121";
}
.fa-mail-reply-all:before,
.fa-reply-all:before {
  content: "\f122";
}
.fa-star-half-empty:before,
.fa-star-half-full:before,
.fa-star-half-o:before {
  content: "\f123";
}
.fa-location-arrow:before {
  content: "\f124";
}
.fa-crop:before {
  content: "\f125";
}
.fa-code-fork:before {
  content: "\f126";
}
.fa-unlink:before,
.fa-chain-broken:before {
  content: "\f127";
}
.fa-question:before {
  content: "\f128";
}
.fa-info:before {
  content: "\f129";
}
.fa-exclamation:before {
  content: "\f12a";
}
.fa-superscript:before {
  content: "\f12b";
}
.fa-subscript:before {
  content: "\f12c";
}
.fa-eraser:before {
  content: "\f12d";
}
.fa-puzzle-piece:before {
  content: "\f12e";
}
.fa-microphone:before {
  content: "\f130";
}
.fa-microphone-slash:before {
  content: "\f131";
}
.fa-shield:before {
  content: "\f132";
}
.fa-calendar-o:before {
  content: "\f133";
}
.fa-fire-extinguisher:before {
  content: "\f134";
}
.fa-rocket:before {
  content: "\f135";
}
.fa-maxcdn:before {
  content: "\f136";
}
.fa-chevron-circle-left:before {
  content: "\f137";
}
.fa-chevron-circle-right:before {
  content: "\f138";
}
.fa-chevron-circle-up:before {
  content: "\f139";
}
.fa-chevron-circle-down:before {
  content: "\f13a";
}
.fa-html5:before {
  content: "\f13b";
}
.fa-css3:before {
  content: "\f13c";
}
.fa-anchor:before {
  content: "\f13d";
}
.fa-unlock-alt:before {
  content: "\f13e";
}
.fa-bullseye:before {
  content: "\f140";
}
.fa-ellipsis-h:before {
  content: "\f141";
}
.fa-ellipsis-v:before {
  content: "\f142";
}
.fa-rss-square:before {
  content: "\f143";
}
.fa-play-circle:before {
  content: "\f144";
}
.fa-ticket:before {
  content: "\f145";
}
.fa-minus-square:before {
  content: "\f146";
}
.fa-minus-square-o:before {
  content: "\f147";
}
.fa-level-up:before {
  content: "\f148";
}
.fa-level-down:before {
  content: "\f149";
}
.fa-check-square:before {
  content: "\f14a";
}
.fa-pencil-square:before {
  content: "\f14b";
}
.fa-external-link-square:before {
  content: "\f14c";
}
.fa-share-square:before {
  content: "\f14d";
}
.fa-compass:before {
  content: "\f14e";
}
.fa-toggle-down:before,
.fa-caret-square-o-down:before {
  content: "\f150";
}
.fa-toggle-up:before,
.fa-caret-square-o-up:before {
  content: "\f151";
}
.fa-toggle-right:before,
.fa-caret-square-o-right:before {
  content: "\f152";
}
.fa-euro:before,
.fa-eur:before {
  content: "\f153";
}
.fa-gbp:before {
  content: "\f154";
}
.fa-dollar:before,
.fa-usd:before {
  content: "\f155";
}
.fa-rupee:before,
.fa-inr:before {
  content: "\f156";
}
.fa-cny:before,
.fa-rmb:before,
.fa-yen:before,
.fa-jpy:before {
  content: "\f157";
}
.fa-ruble:before,
.fa-rouble:before,
.fa-rub:before {
  content: "\f158";
}
.fa-won:before,
.fa-krw:before {
  content: "\f159";
}
.fa-bitcoin:before,
.fa-btc:before {
  content: "\f15a";
}
.fa-file:before {
  content: "\f15b";
}
.fa-file-text:before {
  content: "\f15c";
}
.fa-sort-alpha-asc:before {
  content: "\f15d";
}
.fa-sort-alpha-desc:before {
  content: "\f15e";
}
.fa-sort-amount-asc:before {
  content: "\f160";
}
.fa-sort-amount-desc:before {
  content: "\f161";
}
.fa-sort-numeric-asc:before {
  content: "\f162";
}
.fa-sort-numeric-desc:before {
  content: "\f163";
}
.fa-thumbs-up:before {
  content: "\f164";
}
.fa-thumbs-down:before {
  content: "\f165";
}
.fa-youtube-square:before {
  content: "\f166";
}
.fa-youtube:before {
  content: "\f167";
}
.fa-xing:before {
  content: "\f168";
}
.fa-xing-square:before {
  content: "\f169";
}
.fa-youtube-play:before {
  content: "\f16a";
}
.fa-dropbox:before {
  content: "\f16b";
}
.fa-stack-overflow:before {
  content: "\f16c";
}
.fa-instagram:before {
  content: "\f16d";
}
.fa-flickr:before {
  content: "\f16e";
}
.fa-adn:before {
  content: "\f170";
}
.fa-bitbucket:before {
  content: "\f171";
}
.fa-bitbucket-square:before {
  content: "\f172";
}
.fa-tumblr:before {
  content: "\f173";
}
.fa-tumblr-square:before {
  content: "\f174";
}
.fa-long-arrow-down:before {
  content: "\f175";
}
.fa-long-arrow-up:before {
  content: "\f176";
}
.fa-long-arrow-left:before {
  content: "\f177";
}
.fa-long-arrow-right:before {
  content: "\f178";
}
.fa-apple:before {
  content: "\f179";
}
.fa-windows:before {
  content: "\f17a";
}
.fa-android:before {
  content: "\f17b";
}
.fa-linux:before {
  content: "\f17c";
}
.fa-dribbble:before {
  content: "\f17d";
}
.fa-skype:before {
  content: "\f17e";
}
.fa-foursquare:before {
  content: "\f180";
}
.fa-trello:before {
  content: "\f181";
}
.fa-female:before {
  content: "\f182";
}
.fa-male:before {
  content: "\f183";
}
.fa-gittip:before {
  content: "\f184";
}
.fa-sun-o:before {
  content: "\f185";
}
.fa-moon-o:before {
  content: "\f186";
}
.fa-archive:before {
  content: "\f187";
}
.fa-bug:before {
  content: "\f188";
}
.fa-vk:before {
  content: "\f189";
}
.fa-weibo:before {
  content: "\f18a";
}
.fa-renren:before {
  content: "\f18b";
}
.fa-pagelines:before {
  content: "\f18c";
}
.fa-stack-exchange:before {
  content: "\f18d";
}
.fa-arrow-circle-o-right:before {
  content: "\f18e";
}
.fa-arrow-circle-o-left:before {
  content: "\f190";
}
.fa-toggle-left:before,
.fa-caret-square-o-left:before {
  content: "\f191";
}
.fa-dot-circle-o:before {
  content: "\f192";
}
.fa-wheelchair:before {
  content: "\f193";
}
.fa-vimeo-square:before {
  content: "\f194";
}
.fa-turkish-lira:before,
.fa-try:before {
  content: "\f195";
}
.fa-plus-square-o:before {
  content: "\f196";
}
.fa-space-shuttle:before {
  content: "\f197";
}
.fa-slack:before {
  content: "\f198";
}
.fa-envelope-square:before {
  content: "\f199";
}
.fa-wordpress:before {
  content: "\f19a";
}
.fa-openid:before {
  content: "\f19b";
}
.fa-institution:before,
.fa-bank:before,
.fa-university:before {
  content: "\f19c";
}
.fa-mortar-board:before,
.fa-graduation-cap:before {
  content: "\f19d";
}
.fa-yahoo:before {
  content: "\f19e";
}
.fa-google:before {
  content: "\f1a0";
}
.fa-reddit:before {
  content: "\f1a1";
}
.fa-reddit-square:before {
  content: "\f1a2";
}
.fa-stumbleupon-circle:before {
  content: "\f1a3";
}
.fa-stumbleupon:before {
  content: "\f1a4";
}
.fa-delicious:before {
  content: "\f1a5";
}
.fa-digg:before {
  content: "\f1a6";
}
.fa-pied-piper:before {
  content: "\f1a7";
}
.fa-pied-piper-alt:before {
  content: "\f1a8";
}
.fa-drupal:before {
  content: "\f1a9";
}
.fa-joomla:before {
  content: "\f1aa";
}
.fa-language:before {
  content: "\f1ab";
}
.fa-fax:before {
  content: "\f1ac";
}
.fa-building:before {
  content: "\f1ad";
}
.fa-child:before {
  content: "\f1ae";
}
.fa-paw:before {
  content: "\f1b0";
}
.fa-spoon:before {
  content: "\f1b1";
}
.fa-cube:before {
  content: "\f1b2";
}
.fa-cubes:before {
  content: "\f1b3";
}
.fa-behance:before {
  content: "\f1b4";
}
.fa-behance-square:before {
  content: "\f1b5";
}
.fa-steam:before {
  content: "\f1b6";
}
.fa-steam-square:before {
  content: "\f1b7";
}
.fa-recycle:before {
  content: "\f1b8";
}
.fa-automobile:before,
.fa-car:before {
  content: "\f1b9";
}
.fa-cab:before,
.fa-taxi:before {
  content: "\f1ba";
}
.fa-tree:before {
  content: "\f1bb";
}
.fa-spotify:before {
  content: "\f1bc";
}
.fa-deviantart:before {
  content: "\f1bd";
}
.fa-soundcloud:before {
  content: "\f1be";
}
.fa-database:before {
  content: "\f1c0";
}
.fa-file-pdf-o:before {
  content: "\f1c1";
}
.fa-file-word-o:before {
  content: "\f1c2";
}
.fa-file-excel-o:before {
  content: "\f1c3";
}
.fa-file-powerpoint-o:before {
  content: "\f1c4";
}
.fa-file-photo-o:before,
.fa-file-picture-o:before,
.fa-file-image-o:before {
  content: "\f1c5";
}
.fa-file-zip-o:before,
.fa-file-archive-o:before {
  content: "\f1c6";
}
.fa-file-sound-o:before,
.fa-file-audio-o:before {
  content: "\f1c7";
}
.fa-file-movie-o:before,
.fa-file-video-o:before {
  content: "\f1c8";
}
.fa-file-code-o:before {
  content: "\f1c9";
}
.fa-vine:before {
  content: "\f1ca";
}
.fa-codepen:before {
  content: "\f1cb";
}
.fa-jsfiddle:before {
  content: "\f1cc";
}
.fa-life-bouy:before,
.fa-life-buoy:before,
.fa-life-saver:before,
.fa-support:before,
.fa-life-ring:before {
  content: "\f1cd";
}
.fa-circle-o-notch:before {
  content: "\f1ce";
}
.fa-ra:before,
.fa-rebel:before {
  content: "\f1d0";
}
.fa-ge:before,
.fa-empire:before {
  content: "\f1d1";
}
.fa-git-square:before {
  content: "\f1d2";
}
.fa-git:before {
  content: "\f1d3";
}
.fa-hacker-news:before {
  content: "\f1d4";
}
.fa-tencent-weibo:before {
  content: "\f1d5";
}
.fa-qq:before {
  content: "\f1d6";
}
.fa-wechat:before,
.fa-weixin:before {
  content: "\f1d7";
}
.fa-send:before,
.fa-paper-plane:before {
  content: "\f1d8";
}
.fa-send-o:before,
.fa-paper-plane-o:before {
  content: "\f1d9";
}
.fa-history:before {
  content: "\f1da";
}
.fa-circle-thin:before {
  content: "\f1db";
}
.fa-header:before {
  content: "\f1dc";
}
.fa-paragraph:before {
  content: "\f1dd";
}
.fa-sliders:before {
  content: "\f1de";
}
.fa-share-alt:before {
  content: "\f1e0";
}
.fa-share-alt-square:before {
  content: "\f1e1";
}
.fa-bomb:before {
  content: "\f1e2";
}
.fa-soccer-ball-o:before,
.fa-futbol-o:before {
  content: "\f1e3";
}
.fa-tty:before {
  content: "\f1e4";
}
.fa-binoculars:before {
  content: "\f1e5";
}
.fa-plug:before {
  content: "\f1e6";
}
.fa-slideshare:before {
  content: "\f1e7";
}
.fa-twitch:before {
  content: "\f1e8";
}
.fa-yelp:before {
  content: "\f1e9";
}
.fa-newspaper-o:before {
  content: "\f1ea";
}
.fa-wifi:before {
  content: "\f1eb";
}
.fa-calculator:before {
  content: "\f1ec";
}
.fa-paypal:before {
  content: "\f1ed";
}
.fa-google-wallet:before {
  content: "\f1ee";
}
.fa-cc-visa:before {
  content: "\f1f0";
}
.fa-cc-mastercard:before {
  content: "\f1f1";
}
.fa-cc-discover:before {
  content: "\f1f2";
}
.fa-cc-amex:before {
  content: "\f1f3";
}
.fa-cc-paypal:before {
  content: "\f1f4";
}
.fa-cc-stripe:before {
  content: "\f1f5";
}
.fa-bell-slash:before {
  content: "\f1f6";
}
.fa-bell-slash-o:before {
  content: "\f1f7";
}
.fa-trash:before {
  content: "\f1f8";
}
.fa-copyright:before {
  content: "\f1f9";
}
.fa-at:before {
  content: "\f1fa";
}
.fa-eyedropper:before {
  content: "\f1fb";
}
.fa-paint-brush:before {
  content: "\f1fc";
}
.fa-birthday-cake:before {
  content: "\f1fd";
}
.fa-area-chart:before {
  content: "\f1fe";
}
.fa-pie-chart:before {
  content: "\f200";
}
.fa-line-chart:before {
  content: "\f201";
}
.fa-lastfm:before {
  content: "\f202";
}
.fa-lastfm-square:before {
  content: "\f203";
}
.fa-toggle-off:before {
  content: "\f204";
}
.fa-toggle-on:before {
  content: "\f205";
}
.fa-bicycle:before {
  content: "\f206";
}
.fa-bus:before {
  content: "\f207";
}
.fa-ioxhost:before {
  content: "\f208";
}
.fa-angellist:before {
  content: "\f209";
}
.fa-cc:before {
  content: "\f20a";
}
.fa-shekel:before,
.fa-sheqel:before,
.fa-ils:before {
  content: "\f20b";
}
.fa-meanpath:before {
  content: "\f20c";
}
/*!
*
* IPython base
*
*/
.modal.fade .modal-dialog {
  -webkit-transform: translate(0, 0);
  -ms-transform: translate(0, 0);
  -o-transform: translate(0, 0);
  transform: translate(0, 0);
}
code {
  color: #000;
}
pre {
  font-size: inherit;
  line-height: inherit;
}
label {
  font-weight: normal;
}
/* Make the page background atleast 100% the height of the view port */
/* Make the page itself atleast 70% the height of the view port */
.border-box-sizing {
  box-sizing: border-box;
  -moz-box-sizing: border-box;
  -webkit-box-sizing: border-box;
}
.corner-all {
  border-radius: 2px;
}
.no-padding {
  padding: 0px;
}
/* Flexible box model classes */
/* Taken from Alex Russell http://infrequently.org/2009/08/css-3-progress/ */
/* This file is a compatability layer.  It allows the usage of flexible box 
model layouts accross multiple browsers, including older browsers.  The newest,
universal implementation of the flexible box model is used when available (see
`Modern browsers` comments below).  Browsers that are known to implement this 
new spec completely include:

    Firefox 28.0+
    Chrome 29.0+
    Internet Explorer 11+ 
    Opera 17.0+

Browsers not listed, including Safari, are supported via the styling under the
`Old browsers` comments below.
*/
.hbox {
  /* Old browsers */
  display: -webkit-box;
  -webkit-box-orient: horizontal;
  -webkit-box-align: stretch;
  display: -moz-box;
  -moz-box-orient: horizontal;
  -moz-box-align: stretch;
  display: box;
  box-orient: horizontal;
  box-align: stretch;
  /* Modern browsers */
  display: flex;
  flex-direction: row;
  align-items: stretch;
}
.hbox > * {
  /* Old browsers */
  -webkit-box-flex: 0;
  -moz-box-flex: 0;
  box-flex: 0;
  /* Modern browsers */
  flex: none;
}
.vbox {
  /* Old browsers */
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-box-align: stretch;
  display: -moz-box;
  -moz-box-orient: vertical;
  -moz-box-align: stretch;
  display: box;
  box-orient: vertical;
  box-align: stretch;
  /* Modern browsers */
  display: flex;
  flex-direction: column;
  align-items: stretch;
}
.vbox > * {
  /* Old browsers */
  -webkit-box-flex: 0;
  -moz-box-flex: 0;
  box-flex: 0;
  /* Modern browsers */
  flex: none;
}
.hbox.reverse,
.vbox.reverse,
.reverse {
  /* Old browsers */
  -webkit-box-direction: reverse;
  -moz-box-direction: reverse;
  box-direction: reverse;
  /* Modern browsers */
  flex-direction: row-reverse;
}
.hbox.box-flex0,
.vbox.box-flex0,
.box-flex0 {
  /* Old browsers */
  -webkit-box-flex: 0;
  -moz-box-flex: 0;
  box-flex: 0;
  /* Modern browsers */
  flex: none;
  width: auto;
}
.hbox.box-flex1,
.vbox.box-flex1,
.box-flex1 {
  /* Old browsers */
  -webkit-box-flex: 1;
  -moz-box-flex: 1;
  box-flex: 1;
  /* Modern browsers */
  flex: 1;
}
.hbox.box-flex,
.vbox.box-flex,
.box-flex {
  /* Old browsers */
  /* Old browsers */
  -webkit-box-flex: 1;
  -moz-box-flex: 1;
  box-flex: 1;
  /* Modern browsers */
  flex: 1;
}
.hbox.box-flex2,
.vbox.box-flex2,
.box-flex2 {
  /* Old browsers */
  -webkit-box-flex: 2;
  -moz-box-flex: 2;
  box-flex: 2;
  /* Modern browsers */
  flex: 2;
}
.box-group1 {
  /*  Deprecated */
  -webkit-box-flex-group: 1;
  -moz-box-flex-group: 1;
  box-flex-group: 1;
}
.box-group2 {
  /* Deprecated */
  -webkit-box-flex-group: 2;
  -moz-box-flex-group: 2;
  box-flex-group: 2;
}
.hbox.start,
.vbox.start,
.start {
  /* Old browsers */
  -webkit-box-pack: start;
  -moz-box-pack: start;
  box-pack: start;
  /* Modern browsers */
  justify-content: flex-start;
}
.hbox.end,
.vbox.end,
.end {
  /* Old browsers */
  -webkit-box-pack: end;
  -moz-box-pack: end;
  box-pack: end;
  /* Modern browsers */
  justify-content: flex-end;
}
.hbox.center,
.vbox.center,
.center {
  /* Old browsers */
  -webkit-box-pack: center;
  -moz-box-pack: center;
  box-pack: center;
  /* Modern browsers */
  justify-content: center;
}
.hbox.baseline,
.vbox.baseline,
.baseline {
  /* Old browsers */
  -webkit-box-pack: baseline;
  -moz-box-pack: baseline;
  box-pack: baseline;
  /* Modern browsers */
  justify-content: baseline;
}
.hbox.stretch,
.vbox.stretch,
.stretch {
  /* Old browsers */
  -webkit-box-pack: stretch;
  -moz-box-pack: stretch;
  box-pack: stretch;
  /* Modern browsers */
  justify-content: stretch;
}
.hbox.align-start,
.vbox.align-start,
.align-start {
  /* Old browsers */
  -webkit-box-align: start;
  -moz-box-align: start;
  box-align: start;
  /* Modern browsers */
  align-items: flex-start;
}
.hbox.align-end,
.vbox.align-end,
.align-end {
  /* Old browsers */
  -webkit-box-align: end;
  -moz-box-align: end;
  box-align: end;
  /* Modern browsers */
  align-items: flex-end;
}
.hbox.align-center,
.vbox.align-center,
.align-center {
  /* Old browsers */
  -webkit-box-align: center;
  -moz-box-align: center;
  box-align: center;
  /* Modern browsers */
  align-items: center;
}
.hbox.align-baseline,
.vbox.align-baseline,
.align-baseline {
  /* Old browsers */
  -webkit-box-align: baseline;
  -moz-box-align: baseline;
  box-align: baseline;
  /* Modern browsers */
  align-items: baseline;
}
.hbox.align-stretch,
.vbox.align-stretch,
.align-stretch {
  /* Old browsers */
  -webkit-box-align: stretch;
  -moz-box-align: stretch;
  box-align: stretch;
  /* Modern browsers */
  align-items: stretch;
}
div.error {
  margin: 2em;
  text-align: center;
}
div.error > h1 {
  font-size: 500%;
  line-height: normal;
}
div.error > p {
  font-size: 200%;
  line-height: normal;
}
div.traceback-wrapper {
  text-align: left;
  max-width: 800px;
  margin: auto;
}
/**
 * Primary styles
 *
 * Author: Jupyter Development Team
 */
body {
  background-color: #fff;
  /* This makes sure that the body covers the entire window and needs to
       be in a different element than the display: box in wrapper below */
  position: absolute;
  left: 0px;
  right: 0px;
  top: 0px;
  bottom: 0px;
  overflow: visible;
}
body > #header {
  /* Initially hidden to prevent FLOUC */
  display: none;
  background-color: #fff;
  /* Display over codemirror */
  position: relative;
  z-index: 100;
}
body > #header #header-container {
  padding-bottom: 5px;
  padding-top: 5px;
  box-sizing: border-box;
  -moz-box-sizing: border-box;
  -webkit-box-sizing: border-box;
}
body > #header .header-bar {
  width: 100%;
  height: 1px;
  background: #e7e7e7;
  margin-bottom: -1px;
}
@media print {
  body > #header {
    display: none !important;
  }
}
#header-spacer {
  width: 100%;
  visibility: hidden;
}
@media print {
  #header-spacer {
    display: none;
  }
}
#ipython_notebook {
  padding-left: 0px;
  padding-top: 1px;
  padding-bottom: 1px;
}
@media (max-width: 991px) {
  #ipython_notebook {
    margin-left: 10px;
  }
}
[dir="rtl"] #ipython_notebook {
  float: right !important;
}
#noscript {
  width: auto;
  padding-top: 16px;
  padding-bottom: 16px;
  text-align: center;
  font-size: 22px;
  color: red;
  font-weight: bold;
}
#ipython_notebook img {
  height: 28px;
}
#site {
  width: 100%;
  display: none;
  box-sizing: border-box;
  -moz-box-sizing: border-box;
  -webkit-box-sizing: border-box;
  overflow: auto;
}
@media print {
  #site {
    height: auto !important;
  }
}
/* Smaller buttons */
.ui-button .ui-button-text {
  padding: 0.2em 0.8em;
  font-size: 77%;
}
input.ui-button {
  padding: 0.3em 0.9em;
}
span#login_widget {
  float: right;
}
span#login_widget > .button,
#logout {
  color: #333;
  background-color: #fff;
  border-color: #ccc;
}
span#login_widget > .button:focus,
#logout:focus,
span#login_widget > .button.focus,
#logout.focus {
  color: #333;
  background-color: #e6e6e6;
  border-color: #8c8c8c;
}
span#login_widget > .button:hover,
#logout:hover {
  color: #333;
  background-color: #e6e6e6;
  border-color: #adadad;
}
span#login_widget > .button:active,
#logout:active,
span#login_widget > .button.active,
#logout.active,
.open > .dropdown-togglespan#login_widget > .button,
.open > .dropdown-toggle#logout {
  color: #333;
  background-color: #e6e6e6;
  border-color: #adadad;
}
span#login_widget > .button:active:hover,
#logout:active:hover,
span#login_widget > .button.active:hover,
#logout.active:hover,
.open > .dropdown-togglespan#login_widget > .button:hover,
.open > .dropdown-toggle#logout:hover,
span#login_widget > .button:active:focus,
#logout:active:focus,
span#login_widget > .button.active:focus,
#logout.active:focus,
.open > .dropdown-togglespan#login_widget > .button:focus,
.open > .dropdown-toggle#logout:focus,
span#login_widget > .button:active.focus,
#logout:active.focus,
span#login_widget > .button.active.focus,
#logout.active.focus,
.open > .dropdown-togglespan#login_widget > .button.focus,
.open > .dropdown-toggle#logout.focus {
  color: #333;
  background-color: #d4d4d4;
  border-color: #8c8c8c;
}
span#login_widget > .button:active,
#logout:active,
span#login_widget > .button.active,
#logout.active,
.open > .dropdown-togglespan#login_widget > .button,
.open > .dropdown-toggle#logout {
  background-image: none;
}
span#login_widget > .button.disabled:hover,
#logout.disabled:hover,
span#login_widget > .button[disabled]:hover,
#logout[disabled]:hover,
fieldset[disabled] span#login_widget > .button:hover,
fieldset[disabled] #logout:hover,
span#login_widget > .button.disabled:focus,
#logout.disabled:focus,
span#login_widget > .button[disabled]:focus,
#logout[disabled]:focus,
fieldset[disabled] span#login_widget > .button:focus,
fieldset[disabled] #logout:focus,
span#login_widget > .button.disabled.focus,
#logout.disabled.focus,
span#login_widget > .button[disabled].focus,
#logout[disabled].focus,
fieldset[disabled] span#login_widget > .button.focus,
fieldset[disabled] #logout.focus {
  background-color: #fff;
  border-color: #ccc;
}
span#login_widget > .button .badge,
#logout .badge {
  color: #fff;
  background-color: #333;
}
.nav-header {
  text-transform: none;
}
#header > span {
  margin-top: 10px;
}
.modal_stretch .modal-dialog {
  /* Old browsers */
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-box-align: stretch;
  display: -moz-box;
  -moz-box-orient: vertical;
  -moz-box-align: stretch;
  display: box;
  box-orient: vertical;
  box-align: stretch;
  /* Modern browsers */
  display: flex;
  flex-direction: column;
  align-items: stretch;
  min-height: 80vh;
}
.modal_stretch .modal-dialog .modal-body {
  max-height: calc(100vh - 200px);
  overflow: auto;
  flex: 1;
}
@media (min-width: 768px) {
  .modal .modal-dialog {
    width: 700px;
  }
}
@media (min-width: 768px) {
  select.form-control {
    margin-left: 12px;
    margin-right: 12px;
  }
}
/*!
*
* IPython auth
*
*/
.center-nav {
  display: inline-block;
  margin-bottom: -4px;
}
/*!
*
* IPython tree view
*
*/
/* We need an invisible input field on top of the sentense*/
/* "Drag file onto the list ..." */
.alternate_upload {
  background-color: none;
  display: inline;
}
.alternate_upload.form {
  padding: 0;
  margin: 0;
}
.alternate_upload input.fileinput {
  text-align: center;
  vertical-align: middle;
  display: inline;
  opacity: 0;
  z-index: 2;
  width: 12ex;
  margin-right: -12ex;
}
.alternate_upload .btn-upload {
  height: 22px;
}
/**
 * Primary styles
 *
 * Author: Jupyter Development Team
 */
[dir="rtl"] #tabs li {
  float: right;
}
ul#tabs {
  margin-bottom: 4px;
}
[dir="rtl"] ul#tabs {
  margin-right: 0px;
}
ul#tabs a {
  padding-top: 6px;
  padding-bottom: 4px;
}
ul.breadcrumb a:focus,
ul.breadcrumb a:hover {
  text-decoration: none;
}
ul.breadcrumb i.icon-home {
  font-size: 16px;
  margin-right: 4px;
}
ul.breadcrumb span {
  color: #5e5e5e;
}
.list_toolbar {
  padding: 4px 0 4px 0;
  vertical-align: middle;
}
.list_toolbar .tree-buttons {
  padding-top: 1px;
}
[dir="rtl"] .list_toolbar .tree-buttons {
  float: left !important;
}
[dir="rtl"] .list_toolbar .pull-right {
  padding-top: 1px;
  float: left !important;
}
[dir="rtl"] .list_toolbar .pull-left {
  float: right !important;
}
.dynamic-buttons {
  padding-top: 3px;
  display: inline-block;
}
.list_toolbar [class*="span"] {
  min-height: 24px;
}
.list_header {
  font-weight: bold;
  background-color: #EEE;
}
.list_placeholder {
  font-weight: bold;
  padding-top: 4px;
  padding-bottom: 4px;
  padding-left: 7px;
  padding-right: 7px;
}
.list_container {
  margin-top: 4px;
  margin-bottom: 20px;
  border: 1px solid #ddd;
  border-radius: 2px;
}
.list_container > div {
  border-bottom: 1px solid #ddd;
}
.list_container > div:hover .list-item {
  background-color: red;
}
.list_container > div:last-child {
  border: none;
}
.list_item:hover .list_item {
  background-color: #ddd;
}
.list_item a {
  text-decoration: none;
}
.list_item:hover {
  background-color: #fafafa;
}
.list_header > div,
.list_item > div {
  padding-top: 4px;
  padding-bottom: 4px;
  padding-left: 7px;
  padding-right: 7px;
  line-height: 22px;
}
.list_header > div input,
.list_item > div input {
  margin-right: 7px;
  margin-left: 14px;
  vertical-align: baseline;
  line-height: 22px;
  position: relative;
  top: -1px;
}
.list_header > div .item_link,
.list_item > div .item_link {
  margin-left: -1px;
  vertical-align: baseline;
  line-height: 22px;
}
.new-file input[type=checkbox] {
  visibility: hidden;
}
.item_name {
  line-height: 22px;
  height: 24px;
}
.item_icon {
  font-size: 14px;
  color: #5e5e5e;
  margin-right: 7px;
  margin-left: 7px;
  line-height: 22px;
  vertical-align: baseline;
}
.item_buttons {
  line-height: 1em;
  margin-left: -5px;
}
.item_buttons .btn,
.item_buttons .btn-group,
.item_buttons .input-group {
  float: left;
}
.item_buttons > .btn,
.item_buttons > .btn-group,
.item_buttons > .input-group {
  margin-left: 5px;
}
.item_buttons .btn {
  min-width: 13ex;
}
.item_buttons .running-indicator {
  padding-top: 4px;
  color: #5cb85c;
}
.item_buttons .kernel-name {
  padding-top: 4px;
  color: #5bc0de;
  margin-right: 7px;
  float: left;
}
.toolbar_info {
  height: 24px;
  line-height: 24px;
}
.list_item input:not([type=checkbox]) {
  padding-top: 3px;
  padding-bottom: 3px;
  height: 22px;
  line-height: 14px;
  margin: 0px;
}
.highlight_text {
  color: blue;
}
#project_name {
  display: inline-block;
  padding-left: 7px;
  margin-left: -2px;
}
#project_name > .breadcrumb {
  padding: 0px;
  margin-bottom: 0px;
  background-color: transparent;
  font-weight: bold;
}
#tree-selector {
  padding-right: 0px;
}
[dir="rtl"] #tree-selector a {
  float: right;
}
#button-select-all {
  min-width: 50px;
}
#select-all {
  margin-left: 7px;
  margin-right: 2px;
}
.menu_icon {
  margin-right: 2px;
}
.tab-content .row {
  margin-left: 0px;
  margin-right: 0px;
}
.folder_icon:before {
  display: inline-block;
  font: normal normal normal 14px/1 FontAwesome;
  font-size: inherit;
  text-rendering: auto;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  content: "\f114";
}
.folder_icon:before.pull-left {
  margin-right: .3em;
}
.folder_icon:before.pull-right {
  margin-left: .3em;
}
.notebook_icon:before {
  display: inline-block;
  font: normal normal normal 14px/1 FontAwesome;
  font-size: inherit;
  text-rendering: auto;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  content: "\f02d";
  position: relative;
  top: -1px;
}
.notebook_icon:before.pull-left {
  margin-right: .3em;
}
.notebook_icon:before.pull-right {
  margin-left: .3em;
}
.running_notebook_icon:before {
  display: inline-block;
  font: normal normal normal 14px/1 FontAwesome;
  font-size: inherit;
  text-rendering: auto;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  content: "\f02d";
  position: relative;
  top: -1px;
  color: #5cb85c;
}
.running_notebook_icon:before.pull-left {
  margin-right: .3em;
}
.running_notebook_icon:before.pull-right {
  margin-left: .3em;
}
.file_icon:before {
  display: inline-block;
  font: normal normal normal 14px/1 FontAwesome;
  font-size: inherit;
  text-rendering: auto;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  content: "\f016";
  position: relative;
  top: -2px;
}
.file_icon:before.pull-left {
  margin-right: .3em;
}
.file_icon:before.pull-right {
  margin-left: .3em;
}
#notebook_toolbar .pull-right {
  padding-top: 0px;
  margin-right: -1px;
}
ul#new-menu {
  left: auto;
  right: 0;
}
[dir="rtl"] #new-menu {
  text-align: right;
}
.kernel-menu-icon {
  padding-right: 12px;
  width: 24px;
  content: "\f096";
}
.kernel-menu-icon:before {
  content: "\f096";
}
.kernel-menu-icon-current:before {
  content: "\f00c";
}
#tab_content {
  padding-top: 20px;
}
#running .panel-group .panel {
  margin-top: 3px;
  margin-bottom: 1em;
}
#running .panel-group .panel .panel-heading {
  background-color: #EEE;
  padding-top: 4px;
  padding-bottom: 4px;
  padding-left: 7px;
  padding-right: 7px;
  line-height: 22px;
}
#running .panel-group .panel .panel-heading a:focus,
#running .panel-group .panel .panel-heading a:hover {
  text-decoration: none;
}
#running .panel-group .panel .panel-body {
  padding: 0px;
}
#running .panel-group .panel .panel-body .list_container {
  margin-top: 0px;
  margin-bottom: 0px;
  border: 0px;
  border-radius: 0px;
}
#running .panel-group .panel .panel-body .list_container .list_item {
  border-bottom: 1px solid #ddd;
}
#running .panel-group .panel .panel-body .list_container .list_item:last-child {
  border-bottom: 0px;
}
[dir="rtl"] #running .col-sm-8 {
  float: right !important;
}
.delete-button {
  display: none;
}
.duplicate-button {
  display: none;
}
.rename-button {
  display: none;
}
.shutdown-button {
  display: none;
}
.dynamic-instructions {
  display: inline-block;
  padding-top: 4px;
}
/*!
*
* IPython text editor webapp
*
*/
.selected-keymap i.fa {
  padding: 0px 5px;
}
.selected-keymap i.fa:before {
  content: "\f00c";
}
#mode-menu {
  overflow: auto;
  max-height: 20em;
}
.edit_app #header {
  -webkit-box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
  box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
}
.edit_app #menubar .navbar {
  /* Use a negative 1 bottom margin, so the border overlaps the border of the
    header */
  margin-bottom: -1px;
}
.dirty-indicator {
  display: inline-block;
  font: normal normal normal 14px/1 FontAwesome;
  font-size: inherit;
  text-rendering: auto;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  width: 20px;
}
.dirty-indicator.pull-left {
  margin-right: .3em;
}
.dirty-indicator.pull-right {
  margin-left: .3em;
}
.dirty-indicator-dirty {
  display: inline-block;
  font: normal normal normal 14px/1 FontAwesome;
  font-size: inherit;
  text-rendering: auto;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  width: 20px;
}
.dirty-indicator-dirty.pull-left {
  margin-right: .3em;
}
.dirty-indicator-dirty.pull-right {
  margin-left: .3em;
}
.dirty-indicator-clean {
  display: inline-block;
  font: normal normal normal 14px/1 FontAwesome;
  font-size: inherit;
  text-rendering: auto;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  width: 20px;
}
.dirty-indicator-clean.pull-left {
  margin-right: .3em;
}
.dirty-indicator-clean.pull-right {
  margin-left: .3em;
}
.dirty-indicator-clean:before {
  display: inline-block;
  font: normal normal normal 14px/1 FontAwesome;
  font-size: inherit;
  text-rendering: auto;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  content: "\f00c";
}
.dirty-indicator-clean:before.pull-left {
  margin-right: .3em;
}
.dirty-indicator-clean:before.pull-right {
  margin-left: .3em;
}
#filename {
  font-size: 16pt;
  display: table;
  padding: 0px 5px;
}
#current-mode {
  padding-left: 5px;
  padding-right: 5px;
}
#texteditor-backdrop {
  padding-top: 20px;
  padding-bottom: 20px;
}
@media not print {
  #texteditor-backdrop {
    background-color: #EEE;
  }
}
@media print {
  #texteditor-backdrop #texteditor-container .CodeMirror-gutter,
  #texteditor-backdrop #texteditor-container .CodeMirror-gutters {
    background-color: #fff;
  }
}
@media not print {
  #texteditor-backdrop #texteditor-container .CodeMirror-gutter,
  #texteditor-backdrop #texteditor-container .CodeMirror-gutters {
    background-color: #fff;
  }
}
@media not print {
  #texteditor-backdrop #texteditor-container {
    padding: 0px;
    background-color: #fff;
    -webkit-box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
    box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
  }
}
/*!
*
* IPython notebook
*
*/
/* CSS font colors for translated ANSI colors. */
.ansibold {
  font-weight: bold;
}
/* use dark versions for foreground, to improve visibility */
.ansiblack {
  color: black;
}
.ansired {
  color: darkred;
}
.ansigreen {
  color: darkgreen;
}
.ansiyellow {
  color: #c4a000;
}
.ansiblue {
  color: darkblue;
}
.ansipurple {
  color: darkviolet;
}
.ansicyan {
  color: steelblue;
}
.ansigray {
  color: gray;
}
/* and light for background, for the same reason */
.ansibgblack {
  background-color: black;
}
.ansibgred {
  background-color: red;
}
.ansibggreen {
  background-color: green;
}
.ansibgyellow {
  background-color: yellow;
}
.ansibgblue {
  background-color: blue;
}
.ansibgpurple {
  background-color: magenta;
}
.ansibgcyan {
  background-color: cyan;
}
.ansibggray {
  background-color: gray;
}
div.cell {
  /* Old browsers */
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-box-align: stretch;
  display: -moz-box;
  -moz-box-orient: vertical;
  -moz-box-align: stretch;
  display: box;
  box-orient: vertical;
  box-align: stretch;
  /* Modern browsers */
  display: flex;
  flex-direction: column;
  align-items: stretch;
  border-radius: 2px;
  box-sizing: border-box;
  -moz-box-sizing: border-box;
  -webkit-box-sizing: border-box;
  border-width: 1px;
  border-style: solid;
  border-color: transparent;
  width: 100%;
  padding: 5px;
  /* This acts as a spacer between cells, that is outside the border */
  margin: 0px;
  outline: none;
  border-left-width: 1px;
  padding-left: 5px;
  background: linear-gradient(to right, transparent -40px, transparent 1px, transparent 1px, transparent 100%);
}
div.cell.jupyter-soft-selected {
  border-left-color: #90CAF9;
  border-left-color: #E3F2FD;
  border-left-width: 1px;
  padding-left: 5px;
  border-right-color: #E3F2FD;
  border-right-width: 1px;
  background: #E3F2FD;
}
@media print {
  div.cell.jupyter-soft-selected {
    border-color: transparent;
  }
}
div.cell.selected {
  border-color: #ababab;
  border-left-width: 0px;
  padding-left: 6px;
  background: linear-gradient(to right, #42A5F5 -40px, #42A5F5 5px, transparent 5px, transparent 100%);
}
@media print {
  div.cell.selected {
    border-color: transparent;
  }
}
div.cell.selected.jupyter-soft-selected {
  border-left-width: 0;
  padding-left: 6px;
  background: linear-gradient(to right, #42A5F5 -40px, #42A5F5 7px, #E3F2FD 7px, #E3F2FD 100%);
}
.edit_mode div.cell.selected {
  border-color: #66BB6A;
  border-left-width: 0px;
  padding-left: 6px;
  background: linear-gradient(to right, #66BB6A -40px, #66BB6A 5px, transparent 5px, transparent 100%);
}
@media print {
  .edit_mode div.cell.selected {
    border-color: transparent;
  }
}
.prompt {
  /* This needs to be wide enough for 3 digit prompt numbers: In[100]: */
  min-width: 14ex;
  /* This padding is tuned to match the padding on the CodeMirror editor. */
  padding: 0.4em;
  margin: 0px;
  font-family: monospace;
  text-align: right;
  /* This has to match that of the the CodeMirror class line-height below */
  line-height: 1.21429em;
  /* Don't highlight prompt number selection */
  -webkit-touch-callout: none;
  -webkit-user-select: none;
  -khtml-user-select: none;
  -moz-user-select: none;
  -ms-user-select: none;
  user-select: none;
  /* Use default cursor */
  cursor: default;
}
@media (max-width: 540px) {
  .prompt {
    text-align: left;
  }
}
div.inner_cell {
  min-width: 0;
  /* Old browsers */
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-box-align: stretch;
  display: -moz-box;
  -moz-box-orient: vertical;
  -moz-box-align: stretch;
  display: box;
  box-orient: vertical;
  box-align: stretch;
  /* Modern browsers */
  display: flex;
  flex-direction: column;
  align-items: stretch;
  /* Old browsers */
  -webkit-box-flex: 1;
  -moz-box-flex: 1;
  box-flex: 1;
  /* Modern browsers */
  flex: 1;
}
/* input_area and input_prompt must match in top border and margin for alignment */
div.input_area {
  border: 1px solid #cfcfcf;
  border-radius: 2px;
  background: #f7f7f7;
  line-height: 1.21429em;
}
/* This is needed so that empty prompt areas can collapse to zero height when there
   is no content in the output_subarea and the prompt. The main purpose of this is
   to make sure that empty JavaScript output_subareas have no height. */
div.prompt:empty {
  padding-top: 0;
  padding-bottom: 0;
}
div.unrecognized_cell {
  padding: 5px 5px 5px 0px;
  /* Old browsers */
  display: -webkit-box;
  -webkit-box-orient: horizontal;
  -webkit-box-align: stretch;
  display: -moz-box;
  -moz-box-orient: horizontal;
  -moz-box-align: stretch;
  display: box;
  box-orient: horizontal;
  box-align: stretch;
  /* Modern browsers */
  display: flex;
  flex-direction: row;
  align-items: stretch;
}
div.unrecognized_cell .inner_cell {
  border-radius: 2px;
  padding: 5px;
  font-weight: bold;
  color: red;
  border: 1px solid #cfcfcf;
  background: #eaeaea;
}
div.unrecognized_cell .inner_cell a {
  color: inherit;
  text-decoration: none;
}
div.unrecognized_cell .inner_cell a:hover {
  color: inherit;
  text-decoration: none;
}
@media (max-width: 540px) {
  div.unrecognized_cell > div.prompt {
    display: none;
  }
}
div.code_cell {
  /* avoid page breaking on code cells when printing */
}
@media print {
  div.code_cell {
    page-break-inside: avoid;
  }
}
/* any special styling for code cells that are currently running goes here */
div.input {
  page-break-inside: avoid;
  /* Old browsers */
  display: -webkit-box;
  -webkit-box-orient: horizontal;
  -webkit-box-align: stretch;
  display: -moz-box;
  -moz-box-orient: horizontal;
  -moz-box-align: stretch;
  display: box;
  box-orient: horizontal;
  box-align: stretch;
  /* Modern browsers */
  display: flex;
  flex-direction: row;
  align-items: stretch;
}
@media (max-width: 540px) {
  div.input {
    /* Old browsers */
    display: -webkit-box;
    -webkit-box-orient: vertical;
    -webkit-box-align: stretch;
    display: -moz-box;
    -moz-box-orient: vertical;
    -moz-box-align: stretch;
    display: box;
    box-orient: vertical;
    box-align: stretch;
    /* Modern browsers */
    display: flex;
    flex-direction: column;
    align-items: stretch;
  }
}
/* input_area and input_prompt must match in top border and margin for alignment */
div.input_prompt {
  color: #303F9F;
  border-top: 1px solid transparent;
}
div.input_area > div.highlight {
  margin: 0.4em;
  border: none;
  padding: 0px;
  background-color: transparent;
}
div.input_area > div.highlight > pre {
  margin: 0px;
  border: none;
  padding: 0px;
  background-color: transparent;
}
/* The following gets added to the <head> if it is detected that the user has a
 * monospace font with inconsistent normal/bold/italic height.  See
 * notebookmain.js.  Such fonts will have keywords vertically offset with
 * respect to the rest of the text.  The user should select a better font.
 * See: https://github.com/ipython/ipython/issues/1503
 *
 * .CodeMirror span {
 *      vertical-align: bottom;
 * }
 */
.CodeMirror {
  line-height: 1.21429em;
  /* Changed from 1em to our global default */
  font-size: 14px;
  height: auto;
  /* Changed to auto to autogrow */
  background: none;
  /* Changed from white to allow our bg to show through */
}
.CodeMirror-scroll {
  /*  The CodeMirror docs are a bit fuzzy on if overflow-y should be hidden or visible.*/
  /*  We have found that if it is visible, vertical scrollbars appear with font size changes.*/
  overflow-y: hidden;
  overflow-x: auto;
}
.CodeMirror-lines {
  /* In CM2, this used to be 0.4em, but in CM3 it went to 4px. We need the em value because */
  /* we have set a different line-height and want this to scale with that. */
  padding: 0.4em;
}
.CodeMirror-linenumber {
  padding: 0 8px 0 4px;
}
.CodeMirror-gutters {
  border-bottom-left-radius: 2px;
  border-top-left-radius: 2px;
}
.CodeMirror pre {
  /* In CM3 this went to 4px from 0 in CM2. We need the 0 value because of how we size */
  /* .CodeMirror-lines */
  padding: 0;
  border: 0;
  border-radius: 0;
}
/*

Original style from softwaremaniacs.org (c) Ivan Sagalaev <Maniac@SoftwareManiacs.Org>
Adapted from GitHub theme

*/
.highlight-base {
  color: #000;
}
.highlight-variable {
  color: #000;
}
.highlight-variable-2 {
  color: #1a1a1a;
}
.highlight-variable-3 {
  color: #333333;
}
.highlight-string {
  color: #BA2121;
}
.highlight-comment {
  color: #408080;
  font-style: italic;
}
.highlight-number {
  color: #080;
}
.highlight-atom {
  color: #88F;
}
.highlight-keyword {
  color: #008000;
  font-weight: bold;
}
.highlight-builtin {
  color: #008000;
}
.highlight-error {
  color: #f00;
}
.highlight-operator {
  color: #AA22FF;
  font-weight: bold;
}
.highlight-meta {
  color: #AA22FF;
}
/* previously not defined, copying from default codemirror */
.highlight-def {
  color: #00f;
}
.highlight-string-2 {
  color: #f50;
}
.highlight-qualifier {
  color: #555;
}
.highlight-bracket {
  color: #997;
}
.highlight-tag {
  color: #170;
}
.highlight-attribute {
  color: #00c;
}
.highlight-header {
  color: blue;
}
.highlight-quote {
  color: #090;
}
.highlight-link {
  color: #00c;
}
/* apply the same style to codemirror */
.cm-s-ipython span.cm-keyword {
  color: #008000;
  font-weight: bold;
}
.cm-s-ipython span.cm-atom {
  color: #88F;
}
.cm-s-ipython span.cm-number {
  color: #080;
}
.cm-s-ipython span.cm-def {
  color: #00f;
}
.cm-s-ipython span.cm-variable {
  color: #000;
}
.cm-s-ipython span.cm-operator {
  color: #AA22FF;
  font-weight: bold;
}
.cm-s-ipython span.cm-variable-2 {
  color: #1a1a1a;
}
.cm-s-ipython span.cm-variable-3 {
  color: #333333;
}
.cm-s-ipython span.cm-comment {
  color: #408080;
  font-style: italic;
}
.cm-s-ipython span.cm-string {
  color: #BA2121;
}
.cm-s-ipython span.cm-string-2 {
  color: #f50;
}
.cm-s-ipython span.cm-meta {
  color: #AA22FF;
}
.cm-s-ipython span.cm-qualifier {
  color: #555;
}
.cm-s-ipython span.cm-builtin {
  color: #008000;
}
.cm-s-ipython span.cm-bracket {
  color: #997;
}
.cm-s-ipython span.cm-tag {
  color: #170;
}
.cm-s-ipython span.cm-attribute {
  color: #00c;
}
.cm-s-ipython span.cm-header {
  color: blue;
}
.cm-s-ipython span.cm-quote {
  color: #090;
}
.cm-s-ipython span.cm-link {
  color: #00c;
}
.cm-s-ipython span.cm-error {
  color: #f00;
}
.cm-s-ipython span.cm-tab {
  background: url();
  background-position: right;
  background-repeat: no-repeat;
}
div.output_wrapper {
  /* this position must be relative to enable descendents to be absolute within it */
  position: relative;
  /* Old browsers */
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-box-align: stretch;
  display: -moz-box;
  -moz-box-orient: vertical;
  -moz-box-align: stretch;
  display: box;
  box-orient: vertical;
  box-align: stretch;
  /* Modern browsers */
  display: flex;
  flex-direction: column;
  align-items: stretch;
  z-index: 1;
}
/* class for the output area when it should be height-limited */
div.output_scroll {
  /* ideally, this would be max-height, but FF barfs all over that */
  height: 24em;
  /* FF needs this *and the wrapper* to specify full width, or it will shrinkwrap */
  width: 100%;
  overflow: auto;
  border-radius: 2px;
  -webkit-box-shadow: inset 0 2px 8px rgba(0, 0, 0, 0.8);
  box-shadow: inset 0 2px 8px rgba(0, 0, 0, 0.8);
  display: block;
}
/* output div while it is collapsed */
div.output_collapsed {
  margin: 0px;
  padding: 0px;
  /* Old browsers */
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-box-align: stretch;
  display: -moz-box;
  -moz-box-orient: vertical;
  -moz-box-align: stretch;
  display: box;
  box-orient: vertical;
  box-align: stretch;
  /* Modern browsers */
  display: flex;
  flex-direction: column;
  align-items: stretch;
}
div.out_prompt_overlay {
  height: 100%;
  padding: 0px 0.4em;
  position: absolute;
  border-radius: 2px;
}
div.out_prompt_overlay:hover {
  /* use inner shadow to get border that is computed the same on WebKit/FF */
  -webkit-box-shadow: inset 0 0 1px #000;
  box-shadow: inset 0 0 1px #000;
  background: rgba(240, 240, 240, 0.5);
}
div.output_prompt {
  color: #D84315;
}
/* This class is the outer container of all output sections. */
div.output_area {
  padding: 0px;
  page-break-inside: avoid;
  /* Old browsers */
  display: -webkit-box;
  -webkit-box-orient: horizontal;
  -webkit-box-align: stretch;
  display: -moz-box;
  -moz-box-orient: horizontal;
  -moz-box-align: stretch;
  display: box;
  box-orient: horizontal;
  box-align: stretch;
  /* Modern browsers */
  display: flex;
  flex-direction: row;
  align-items: stretch;
}
div.output_area .MathJax_Display {
  text-align: left !important;
}
div.output_area .rendered_html table {
  margin-left: 0;
  margin-right: 0;
}
div.output_area .rendered_html img {
  margin-left: 0;
  margin-right: 0;
}
div.output_area img,
div.output_area svg {
  max-width: 100%;
  height: auto;
}
div.output_area img.unconfined,
div.output_area svg.unconfined {
  max-width: none;
}
/* This is needed to protect the pre formating from global settings such
   as that of bootstrap */
.output {
  /* Old browsers */
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-box-align: stretch;
  display: -moz-box;
  -moz-box-orient: vertical;
  -moz-box-align: stretch;
  display: box;
  box-orient: vertical;
  box-align: stretch;
  /* Modern browsers */
  display: flex;
  flex-direction: column;
  align-items: stretch;
}
@media (max-width: 540px) {
  div.output_area {
    /* Old browsers */
    display: -webkit-box;
    -webkit-box-orient: vertical;
    -webkit-box-align: stretch;
    display: -moz-box;
    -moz-box-orient: vertical;
    -moz-box-align: stretch;
    display: box;
    box-orient: vertical;
    box-align: stretch;
    /* Modern browsers */
    display: flex;
    flex-direction: column;
    align-items: stretch;
  }
}
div.output_area pre {
  margin: 0;
  padding: 0;
  border: 0;
  vertical-align: baseline;
  color: black;
  background-color: transparent;
  border-radius: 0;
}
/* This class is for the output subarea inside the output_area and after
   the prompt div. */
div.output_subarea {
  overflow-x: auto;
  padding: 0.4em;
  /* Old browsers */
  -webkit-box-flex: 1;
  -moz-box-flex: 1;
  box-flex: 1;
  /* Modern browsers */
  flex: 1;
  max-width: calc(100% - 14ex);
}
div.output_scroll div.output_subarea {
  overflow-x: visible;
}
/* The rest of the output_* classes are for special styling of the different
   output types */
/* all text output has this class: */
div.output_text {
  text-align: left;
  color: #000;
  /* This has to match that of the the CodeMirror class line-height below */
  line-height: 1.21429em;
}
/* stdout/stderr are 'text' as well as 'stream', but execute_result/error are *not* streams */
div.output_stderr {
  background: #fdd;
  /* very light red background for stderr */
}
div.output_latex {
  text-align: left;
}
/* Empty output_javascript divs should have no height */
div.output_javascript:empty {
  padding: 0;
}
.js-error {
  color: darkred;
}
/* raw_input styles */
div.raw_input_container {
  line-height: 1.21429em;
  padding-top: 5px;
}
pre.raw_input_prompt {
  /* nothing needed here. */
}
input.raw_input {
  font-family: monospace;
  font-size: inherit;
  color: inherit;
  width: auto;
  /* make sure input baseline aligns with prompt */
  vertical-align: baseline;
  /* padding + margin = 0.5em between prompt and cursor */
  padding: 0em 0.25em;
  margin: 0em 0.25em;
}
input.raw_input:focus {
  box-shadow: none;
}
p.p-space {
  margin-bottom: 10px;
}
div.output_unrecognized {
  padding: 5px;
  font-weight: bold;
  color: red;
}
div.output_unrecognized a {
  color: inherit;
  text-decoration: none;
}
div.output_unrecognized a:hover {
  color: inherit;
  text-decoration: none;
}
.rendered_html {
  color: #000;
  /* any extras will just be numbers: */
}
.rendered_html em {
  font-style: italic;
}
.rendered_html strong {
  font-weight: bold;
}
.rendered_html u {
  text-decoration: underline;
}
.rendered_html :link {
  text-decoration: underline;
}
.rendered_html :visited {
  text-decoration: underline;
}
.rendered_html h1 {
  font-size: 185.7%;
  margin: 1.08em 0 0 0;
  font-weight: bold;
  line-height: 1.0;
}
.rendered_html h2 {
  font-size: 157.1%;
  margin: 1.27em 0 0 0;
  font-weight: bold;
  line-height: 1.0;
}
.rendered_html h3 {
  font-size: 128.6%;
  margin: 1.55em 0 0 0;
  font-weight: bold;
  line-height: 1.0;
}
.rendered_html h4 {
  font-size: 100%;
  margin: 2em 0 0 0;
  font-weight: bold;
  line-height: 1.0;
}
.rendered_html h5 {
  font-size: 100%;
  margin: 2em 0 0 0;
  font-weight: bold;
  line-height: 1.0;
  font-style: italic;
}
.rendered_html h6 {
  font-size: 100%;
  margin: 2em 0 0 0;
  font-weight: bold;
  line-height: 1.0;
  font-style: italic;
}
.rendered_html h1:first-child {
  margin-top: 0.538em;
}
.rendered_html h2:first-child {
  margin-top: 0.636em;
}
.rendered_html h3:first-child {
  margin-top: 0.777em;
}
.rendered_html h4:first-child {
  margin-top: 1em;
}
.rendered_html h5:first-child {
  margin-top: 1em;
}
.rendered_html h6:first-child {
  margin-top: 1em;
}
.rendered_html ul {
  list-style: disc;
  margin: 0em 2em;
  padding-left: 0px;
}
.rendered_html ul ul {
  list-style: square;
  margin: 0em 2em;
}
.rendered_html ul ul ul {
  list-style: circle;
  margin: 0em 2em;
}
.rendered_html ol {
  list-style: decimal;
  margin: 0em 2em;
  padding-left: 0px;
}
.rendered_html ol ol {
  list-style: upper-alpha;
  margin: 0em 2em;
}
.rendered_html ol ol ol {
  list-style: lower-alpha;
  margin: 0em 2em;
}
.rendered_html ol ol ol ol {
  list-style: lower-roman;
  margin: 0em 2em;
}
.rendered_html ol ol ol ol ol {
  list-style: decimal;
  margin: 0em 2em;
}
.rendered_html * + ul {
  margin-top: 1em;
}
.rendered_html * + ol {
  margin-top: 1em;
}
.rendered_html hr {
  color: black;
  background-color: black;
}
.rendered_html pre {
  margin: 1em 2em;
}
.rendered_html pre,
.rendered_html code {
  border: 0;
  background-color: #fff;
  color: #000;
  font-size: 100%;
  padding: 0px;
}
.rendered_html blockquote {
  margin: 1em 2em;
}
.rendered_html table {
  margin-left: auto;
  margin-right: auto;
  border: 1px solid black;
  border-collapse: collapse;
}
.rendered_html tr,
.rendered_html th,
.rendered_html td {
  border: 1px solid black;
  border-collapse: collapse;
  margin: 1em 2em;
}
.rendered_html td,
.rendered_html th {
  text-align: left;
  vertical-align: middle;
  padding: 4px;
}
.rendered_html th {
  font-weight: bold;
}
.rendered_html * + table {
  margin-top: 1em;
}
.rendered_html p {
  text-align: left;
}
.rendered_html * + p {
  margin-top: 1em;
}
.rendered_html img {
  display: block;
  margin-left: auto;
  margin-right: auto;
}
.rendered_html * + img {
  margin-top: 1em;
}
.rendered_html img,
.rendered_html svg {
  max-width: 100%;
  height: auto;
}
.rendered_html img.unconfined,
.rendered_html svg.unconfined {
  max-width: none;
}
div.text_cell {
  /* Old browsers */
  display: -webkit-box;
  -webkit-box-orient: horizontal;
  -webkit-box-align: stretch;
  display: -moz-box;
  -moz-box-orient: horizontal;
  -moz-box-align: stretch;
  display: box;
  box-orient: horizontal;
  box-align: stretch;
  /* Modern browsers */
  display: flex;
  flex-direction: row;
  align-items: stretch;
}
@media (max-width: 540px) {
  div.text_cell > div.prompt {
    display: none;
  }
}
div.text_cell_render {
  /*font-family: "Helvetica Neue", Arial, Helvetica, Geneva, sans-serif;*/
  outline: none;
  resize: none;
  width: inherit;
  border-style: none;
  padding: 0.5em 0.5em 0.5em 0.4em;
  color: #000;
  box-sizing: border-box;
  -moz-box-sizing: border-box;
  -webkit-box-sizing: border-box;
}
a.anchor-link:link {
  text-decoration: none;
  padding: 0px 20px;
  visibility: hidden;
}
h1:hover .anchor-link,
h2:hover .anchor-link,
h3:hover .anchor-link,
h4:hover .anchor-link,
h5:hover .anchor-link,
h6:hover .anchor-link {
  visibility: visible;
}
.text_cell.rendered .input_area {
  display: none;
}
.text_cell.rendered .rendered_html {
  overflow-x: auto;
  overflow-y: hidden;
}
.text_cell.unrendered .text_cell_render {
  display: none;
}
.cm-header-1,
.cm-header-2,
.cm-header-3,
.cm-header-4,
.cm-header-5,
.cm-header-6 {
  font-weight: bold;
  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
}
.cm-header-1 {
  font-size: 185.7%;
}
.cm-header-2 {
  font-size: 157.1%;
}
.cm-header-3 {
  font-size: 128.6%;
}
.cm-header-4 {
  font-size: 110%;
}
.cm-header-5 {
  font-size: 100%;
  font-style: italic;
}
.cm-header-6 {
  font-size: 100%;
  font-style: italic;
}
/*!
*
* IPython notebook webapp
*
*/
@media (max-width: 767px) {
  .notebook_app {
    padding-left: 0px;
    padding-right: 0px;
  }
}
#ipython-main-app {
  box-sizing: border-box;
  -moz-box-sizing: border-box;
  -webkit-box-sizing: border-box;
  height: 100%;
}
div#notebook_panel {
  margin: 0px;
  padding: 0px;
  box-sizing: border-box;
  -moz-box-sizing: border-box;
  -webkit-box-sizing: border-box;
  height: 100%;
}
div#notebook {
  font-size: 14px;
  line-height: 20px;
  overflow-y: hidden;
  overflow-x: auto;
  width: 100%;
  /* This spaces the page away from the edge of the notebook area */
  padding-top: 20px;
  margin: 0px;
  outline: none;
  box-sizing: border-box;
  -moz-box-sizing: border-box;
  -webkit-box-sizing: border-box;
  min-height: 100%;
}
@media not print {
  #notebook-container {
    padding: 15px;
    background-color: #fff;
    min-height: 0;
    -webkit-box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
    box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
  }
}
@media print {
  #notebook-container {
    width: 100%;
  }
}
div.ui-widget-content {
  border: 1px solid #ababab;
  outline: none;
}
pre.dialog {
  background-color: #f7f7f7;
  border: 1px solid #ddd;
  border-radius: 2px;
  padding: 0.4em;
  padding-left: 2em;
}
p.dialog {
  padding: 0.2em;
}
/* Word-wrap output correctly.  This is the CSS3 spelling, though Firefox seems
   to not honor it correctly.  Webkit browsers (Chrome, rekonq, Safari) do.
 */
pre,
code,
kbd,
samp {
  white-space: pre-wrap;
}
#fonttest {
  font-family: monospace;
}
p {
  margin-bottom: 0;
}
.end_space {
  min-height: 100px;
  transition: height .2s ease;
}
.notebook_app > #header {
  -webkit-box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
  box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
}
@media not print {
  .notebook_app {
    background-color: #EEE;
  }
}
kbd {
  border-style: solid;
  border-width: 1px;
  box-shadow: none;
  margin: 2px;
  padding-left: 2px;
  padding-right: 2px;
  padding-top: 1px;
  padding-bottom: 1px;
}
/* CSS for the cell toolbar */
.celltoolbar {
  border: thin solid #CFCFCF;
  border-bottom: none;
  background: #EEE;
  border-radius: 2px 2px 0px 0px;
  width: 100%;
  height: 29px;
  padding-right: 4px;
  /* Old browsers */
  display: -webkit-box;
  -webkit-box-orient: horizontal;
  -webkit-box-align: stretch;
  display: -moz-box;
  -moz-box-orient: horizontal;
  -moz-box-align: stretch;
  display: box;
  box-orient: horizontal;
  box-align: stretch;
  /* Modern browsers */
  display: flex;
  flex-direction: row;
  align-items: stretch;
  /* Old browsers */
  -webkit-box-pack: end;
  -moz-box-pack: end;
  box-pack: end;
  /* Modern browsers */
  justify-content: flex-end;
  display: -webkit-flex;
}
@media print {
  .celltoolbar {
    display: none;
  }
}
.ctb_hideshow {
  display: none;
  vertical-align: bottom;
}
/* ctb_show is added to the ctb_hideshow div to show the cell toolbar.
   Cell toolbars are only shown when the ctb_global_show class is also set.
*/
.ctb_global_show .ctb_show.ctb_hideshow {
  display: block;
}
.ctb_global_show .ctb_show + .input_area,
.ctb_global_show .ctb_show + div.text_cell_input,
.ctb_global_show .ctb_show ~ div.text_cell_render {
  border-top-right-radius: 0px;
  border-top-left-radius: 0px;
}
.ctb_global_show .ctb_show ~ div.text_cell_render {
  border: 1px solid #cfcfcf;
}
.celltoolbar {
  font-size: 87%;
  padding-top: 3px;
}
.celltoolbar select {
  display: block;
  width: 100%;
  height: 32px;
  padding: 6px 12px;
  font-size: 13px;
  line-height: 1.42857143;
  color: #555555;
  background-color: #fff;
  background-image: none;
  border: 1px solid #ccc;
  border-radius: 2px;
  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
  -webkit-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
  -o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
  transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
  height: 30px;
  padding: 5px 10px;
  font-size: 12px;
  line-height: 1.5;
  border-radius: 1px;
  width: inherit;
  font-size: inherit;
  height: 22px;
  padding: 0px;
  display: inline-block;
}
.celltoolbar select:focus {
  border-color: #66afe9;
  outline: 0;
  -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);
  box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);
}
.celltoolbar select::-moz-placeholder {
  color: #999;
  opacity: 1;
}
.celltoolbar select:-ms-input-placeholder {
  color: #999;
}
.celltoolbar select::-webkit-input-placeholder {
  color: #999;
}
.celltoolbar select::-ms-expand {
  border: 0;
  background-color: transparent;
}
.celltoolbar select[disabled],
.celltoolbar select[readonly],
fieldset[disabled] .celltoolbar select {
  background-color: #eeeeee;
  opacity: 1;
}
.celltoolbar select[disabled],
fieldset[disabled] .celltoolbar select {
  cursor: not-allowed;
}
textarea.celltoolbar select {
  height: auto;
}
select.celltoolbar select {
  height: 30px;
  line-height: 30px;
}
textarea.celltoolbar select,
select[multiple].celltoolbar select {
  height: auto;
}
.celltoolbar label {
  margin-left: 5px;
  margin-right: 5px;
}
.completions {
  position: absolute;
  z-index: 110;
  overflow: hidden;
  border: 1px solid #ababab;
  border-radius: 2px;
  -webkit-box-shadow: 0px 6px 10px -1px #adadad;
  box-shadow: 0px 6px 10px -1px #adadad;
  line-height: 1;
}
.completions select {
  background: white;
  outline: none;
  border: none;
  padding: 0px;
  margin: 0px;
  overflow: auto;
  font-family: monospace;
  font-size: 110%;
  color: #000;
  width: auto;
}
.completions select option.context {
  color: #286090;
}
#kernel_logo_widget {
  float: right !important;
  float: right;
}
#kernel_logo_widget .current_kernel_logo {
  display: none;
  margin-top: -1px;
  margin-bottom: -1px;
  width: 32px;
  height: 32px;
}
#menubar {
  box-sizing: border-box;
  -moz-box-sizing: border-box;
  -webkit-box-sizing: border-box;
  margin-top: 1px;
}
#menubar .navbar {
  border-top: 1px;
  border-radius: 0px 0px 2px 2px;
  margin-bottom: 0px;
}
#menubar .navbar-toggle {
  float: left;
  padding-top: 7px;
  padding-bottom: 7px;
  border: none;
}
#menubar .navbar-collapse {
  clear: left;
}
.nav-wrapper {
  border-bottom: 1px solid #e7e7e7;
}
i.menu-icon {
  padding-top: 4px;
}
ul#help_menu li a {
  overflow: hidden;
  padding-right: 2.2em;
}
ul#help_menu li a i {
  margin-right: -1.2em;
}
.dropdown-submenu {
  position: relative;
}
.dropdown-submenu > .dropdown-menu {
  top: 0;
  left: 100%;
  margin-top: -6px;
  margin-left: -1px;
}
.dropdown-submenu:hover > .dropdown-menu {
  display: block;
}
.dropdown-submenu > a:after {
  display: inline-block;
  font: normal normal normal 14px/1 FontAwesome;
  font-size: inherit;
  text-rendering: auto;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  display: block;
  content: "\f0da";
  float: right;
  color: #333333;
  margin-top: 2px;
  margin-right: -10px;
}
.dropdown-submenu > a:after.pull-left {
  margin-right: .3em;
}
.dropdown-submenu > a:after.pull-right {
  margin-left: .3em;
}
.dropdown-submenu:hover > a:after {
  color: #262626;
}
.dropdown-submenu.pull-left {
  float: none;
}
.dropdown-submenu.pull-left > .dropdown-menu {
  left: -100%;
  margin-left: 10px;
}
#notification_area {
  float: right !important;
  float: right;
  z-index: 10;
}
.indicator_area {
  float: right !important;
  float: right;
  color: #777;
  margin-left: 5px;
  margin-right: 5px;
  width: 11px;
  z-index: 10;
  text-align: center;
  width: auto;
}
#kernel_indicator {
  float: right !important;
  float: right;
  color: #777;
  margin-left: 5px;
  margin-right: 5px;
  width: 11px;
  z-index: 10;
  text-align: center;
  width: auto;
  border-left: 1px solid;
}
#kernel_indicator .kernel_indicator_name {
  padding-left: 5px;
  padding-right: 5px;
}
#modal_indicator {
  float: right !important;
  float: right;
  color: #777;
  margin-left: 5px;
  margin-right: 5px;
  width: 11px;
  z-index: 10;
  text-align: center;
  width: auto;
}
#readonly-indicator {
  float: right !important;
  float: right;
  color: #777;
  margin-left: 5px;
  margin-right: 5px;
  width: 11px;
  z-index: 10;
  text-align: center;
  width: auto;
  margin-top: 2px;
  margin-bottom: 0px;
  margin-left: 0px;
  margin-right: 0px;
  display: none;
}
.modal_indicator:before {
  width: 1.28571429em;
  text-align: center;
}
.edit_mode .modal_indicator:before {
  display: inline-block;
  font: normal normal normal 14px/1 FontAwesome;
  font-size: inherit;
  text-rendering: auto;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  content: "\f040";
}
.edit_mode .modal_indicator:before.pull-left {
  margin-right: .3em;
}
.edit_mode .modal_indicator:before.pull-right {
  margin-left: .3em;
}
.command_mode .modal_indicator:before {
  display: inline-block;
  font: normal normal normal 14px/1 FontAwesome;
  font-size: inherit;
  text-rendering: auto;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  content: ' ';
}
.command_mode .modal_indicator:before.pull-left {
  margin-right: .3em;
}
.command_mode .modal_indicator:before.pull-right {
  margin-left: .3em;
}
.kernel_idle_icon:before {
  display: inline-block;
  font: normal normal normal 14px/1 FontAwesome;
  font-size: inherit;
  text-rendering: auto;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  content: "\f10c";
}
.kernel_idle_icon:before.pull-left {
  margin-right: .3em;
}
.kernel_idle_icon:before.pull-right {
  margin-left: .3em;
}
.kernel_busy_icon:before {
  display: inline-block;
  font: normal normal normal 14px/1 FontAwesome;
  font-size: inherit;
  text-rendering: auto;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  content: "\f111";
}
.kernel_busy_icon:before.pull-left {
  margin-right: .3em;
}
.kernel_busy_icon:before.pull-right {
  margin-left: .3em;
}
.kernel_dead_icon:before {
  display: inline-block;
  font: normal normal normal 14px/1 FontAwesome;
  font-size: inherit;
  text-rendering: auto;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  content: "\f1e2";
}
.kernel_dead_icon:before.pull-left {
  margin-right: .3em;
}
.kernel_dead_icon:before.pull-right {
  margin-left: .3em;
}
.kernel_disconnected_icon:before {
  display: inline-block;
  font: normal normal normal 14px/1 FontAwesome;
  font-size: inherit;
  text-rendering: auto;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  content: "\f127";
}
.kernel_disconnected_icon:before.pull-left {
  margin-right: .3em;
}
.kernel_disconnected_icon:before.pull-right {
  margin-left: .3em;
}
.notification_widget {
  color: #777;
  z-index: 10;
  background: rgba(240, 240, 240, 0.5);
  margin-right: 4px;
  color: #333;
  background-color: #fff;
  border-color: #ccc;
}
.notification_widget:focus,
.notification_widget.focus {
  color: #333;
  background-color: #e6e6e6;
  border-color: #8c8c8c;
}
.notification_widget:hover {
  color: #333;
  background-color: #e6e6e6;
  border-color: #adadad;
}
.notification_widget:active,
.notification_widget.active,
.open > .dropdown-toggle.notification_widget {
  color: #333;
  background-color: #e6e6e6;
  border-color: #adadad;
}
.notification_widget:active:hover,
.notification_widget.active:hover,
.open > .dropdown-toggle.notification_widget:hover,
.notification_widget:active:focus,
.notification_widget.active:focus,
.open > .dropdown-toggle.notification_widget:focus,
.notification_widget:active.focus,
.notification_widget.active.focus,
.open > .dropdown-toggle.notification_widget.focus {
  color: #333;
  background-color: #d4d4d4;
  border-color: #8c8c8c;
}
.notification_widget:active,
.notification_widget.active,
.open > .dropdown-toggle.notification_widget {
  background-image: none;
}
.notification_widget.disabled:hover,
.notification_widget[disabled]:hover,
fieldset[disabled] .notification_widget:hover,
.notification_widget.disabled:focus,
.notification_widget[disabled]:focus,
fieldset[disabled] .notification_widget:focus,
.notification_widget.disabled.focus,
.notification_widget[disabled].focus,
fieldset[disabled] .notification_widget.focus {
  background-color: #fff;
  border-color: #ccc;
}
.notification_widget .badge {
  color: #fff;
  background-color: #333;
}
.notification_widget.warning {
  color: #fff;
  background-color: #f0ad4e;
  border-color: #eea236;
}
.notification_widget.warning:focus,
.notification_widget.warning.focus {
  color: #fff;
  background-color: #ec971f;
  border-color: #985f0d;
}
.notification_widget.warning:hover {
  color: #fff;
  background-color: #ec971f;
  border-color: #d58512;
}
.notification_widget.warning:active,
.notification_widget.warning.active,
.open > .dropdown-toggle.notification_widget.warning {
  color: #fff;
  background-color: #ec971f;
  border-color: #d58512;
}
.notification_widget.warning:active:hover,
.notification_widget.warning.active:hover,
.open > .dropdown-toggle.notification_widget.warning:hover,
.notification_widget.warning:active:focus,
.notification_widget.warning.active:focus,
.open > .dropdown-toggle.notification_widget.warning:focus,
.notification_widget.warning:active.focus,
.notification_widget.warning.active.focus,
.open > .dropdown-toggle.notification_widget.warning.focus {
  color: #fff;
  background-color: #d58512;
  border-color: #985f0d;
}
.notification_widget.warning:active,
.notification_widget.warning.active,
.open > .dropdown-toggle.notification_widget.warning {
  background-image: none;
}
.notification_widget.warning.disabled:hover,
.notification_widget.warning[disabled]:hover,
fieldset[disabled] .notification_widget.warning:hover,
.notification_widget.warning.disabled:focus,
.notification_widget.warning[disabled]:focus,
fieldset[disabled] .notification_widget.warning:focus,
.notification_widget.warning.disabled.focus,
.notification_widget.warning[disabled].focus,
fieldset[disabled] .notification_widget.warning.focus {
  background-color: #f0ad4e;
  border-color: #eea236;
}
.notification_widget.warning .badge {
  color: #f0ad4e;
  background-color: #fff;
}
.notification_widget.success {
  color: #fff;
  background-color: #5cb85c;
  border-color: #4cae4c;
}
.notification_widget.success:focus,
.notification_widget.success.focus {
  color: #fff;
  background-color: #449d44;
  border-color: #255625;
}
.notification_widget.success:hover {
  color: #fff;
  background-color: #449d44;
  border-color: #398439;
}
.notification_widget.success:active,
.notification_widget.success.active,
.open > .dropdown-toggle.notification_widget.success {
  color: #fff;
  background-color: #449d44;
  border-color: #398439;
}
.notification_widget.success:active:hover,
.notification_widget.success.active:hover,
.open > .dropdown-toggle.notification_widget.success:hover,
.notification_widget.success:active:focus,
.notification_widget.success.active:focus,
.open > .dropdown-toggle.notification_widget.success:focus,
.notification_widget.success:active.focus,
.notification_widget.success.active.focus,
.open > .dropdown-toggle.notification_widget.success.focus {
  color: #fff;
  background-color: #398439;
  border-color: #255625;
}
.notification_widget.success:active,
.notification_widget.success.active,
.open > .dropdown-toggle.notification_widget.success {
  background-image: none;
}
.notification_widget.success.disabled:hover,
.notification_widget.success[disabled]:hover,
fieldset[disabled] .notification_widget.success:hover,
.notification_widget.success.disabled:focus,
.notification_widget.success[disabled]:focus,
fieldset[disabled] .notification_widget.success:focus,
.notification_widget.success.disabled.focus,
.notification_widget.success[disabled].focus,
fieldset[disabled] .notification_widget.success.focus {
  background-color: #5cb85c;
  border-color: #4cae4c;
}
.notification_widget.success .badge {
  color: #5cb85c;
  background-color: #fff;
}
.notification_widget.info {
  color: #fff;
  background-color: #5bc0de;
  border-color: #46b8da;
}
.notification_widget.info:focus,
.notification_widget.info.focus {
  color: #fff;
  background-color: #31b0d5;
  border-color: #1b6d85;
}
.notification_widget.info:hover {
  color: #fff;
  background-color: #31b0d5;
  border-color: #269abc;
}
.notification_widget.info:active,
.notification_widget.info.active,
.open > .dropdown-toggle.notification_widget.info {
  color: #fff;
  background-color: #31b0d5;
  border-color: #269abc;
}
.notification_widget.info:active:hover,
.notification_widget.info.active:hover,
.open > .dropdown-toggle.notification_widget.info:hover,
.notification_widget.info:active:focus,
.notification_widget.info.active:focus,
.open > .dropdown-toggle.notification_widget.info:focus,
.notification_widget.info:active.focus,
.notification_widget.info.active.focus,
.open > .dropdown-toggle.notification_widget.info.focus {
  color: #fff;
  background-color: #269abc;
  border-color: #1b6d85;
}
.notification_widget.info:active,
.notification_widget.info.active,
.open > .dropdown-toggle.notification_widget.info {
  background-image: none;
}
.notification_widget.info.disabled:hover,
.notification_widget.info[disabled]:hover,
fieldset[disabled] .notification_widget.info:hover,
.notification_widget.info.disabled:focus,
.notification_widget.info[disabled]:focus,
fieldset[disabled] .notification_widget.info:focus,
.notification_widget.info.disabled.focus,
.notification_widget.info[disabled].focus,
fieldset[disabled] .notification_widget.info.focus {
  background-color: #5bc0de;
  border-color: #46b8da;
}
.notification_widget.info .badge {
  color: #5bc0de;
  background-color: #fff;
}
.notification_widget.danger {
  color: #fff;
  background-color: #d9534f;
  border-color: #d43f3a;
}
.notification_widget.danger:focus,
.notification_widget.danger.focus {
  color: #fff;
  background-color: #c9302c;
  border-color: #761c19;
}
.notification_widget.danger:hover {
  color: #fff;
  background-color: #c9302c;
  border-color: #ac2925;
}
.notification_widget.danger:active,
.notification_widget.danger.active,
.open > .dropdown-toggle.notification_widget.danger {
  color: #fff;
  background-color: #c9302c;
  border-color: #ac2925;
}
.notification_widget.danger:active:hover,
.notification_widget.danger.active:hover,
.open > .dropdown-toggle.notification_widget.danger:hover,
.notification_widget.danger:active:focus,
.notification_widget.danger.active:focus,
.open > .dropdown-toggle.notification_widget.danger:focus,
.notification_widget.danger:active.focus,
.notification_widget.danger.active.focus,
.open > .dropdown-toggle.notification_widget.danger.focus {
  color: #fff;
  background-color: #ac2925;
  border-color: #761c19;
}
.notification_widget.danger:active,
.notification_widget.danger.active,
.open > .dropdown-toggle.notification_widget.danger {
  background-image: none;
}
.notification_widget.danger.disabled:hover,
.notification_widget.danger[disabled]:hover,
fieldset[disabled] .notification_widget.danger:hover,
.notification_widget.danger.disabled:focus,
.notification_widget.danger[disabled]:focus,
fieldset[disabled] .notification_widget.danger:focus,
.notification_widget.danger.disabled.focus,
.notification_widget.danger[disabled].focus,
fieldset[disabled] .notification_widget.danger.focus {
  background-color: #d9534f;
  border-color: #d43f3a;
}
.notification_widget.danger .badge {
  color: #d9534f;
  background-color: #fff;
}
div#pager {
  background-color: #fff;
  font-size: 14px;
  line-height: 20px;
  overflow: hidden;
  display: none;
  position: fixed;
  bottom: 0px;
  width: 100%;
  max-height: 50%;
  padding-top: 8px;
  -webkit-box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
  box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
  /* Display over codemirror */
  z-index: 100;
  /* Hack which prevents jquery ui resizable from changing top. */
  top: auto !important;
}
div#pager pre {
  line-height: 1.21429em;
  color: #000;
  background-color: #f7f7f7;
  padding: 0.4em;
}
div#pager #pager-button-area {
  position: absolute;
  top: 8px;
  right: 20px;
}
div#pager #pager-contents {
  position: relative;
  overflow: auto;
  width: 100%;
  height: 100%;
}
div#pager #pager-contents #pager-container {
  position: relative;
  padding: 15px 0px;
  box-sizing: border-box;
  -moz-box-sizing: border-box;
  -webkit-box-sizing: border-box;
}
div#pager .ui-resizable-handle {
  top: 0px;
  height: 8px;
  background: #f7f7f7;
  border-top: 1px solid #cfcfcf;
  border-bottom: 1px solid #cfcfcf;
  /* This injects handle bars (a short, wide = symbol) for 
        the resize handle. */
}
div#pager .ui-resizable-handle::after {
  content: '';
  top: 2px;
  left: 50%;
  height: 3px;
  width: 30px;
  margin-left: -15px;
  position: absolute;
  border-top: 1px solid #cfcfcf;
}
.quickhelp {
  /* Old browsers */
  display: -webkit-box;
  -webkit-box-orient: horizontal;
  -webkit-box-align: stretch;
  display: -moz-box;
  -moz-box-orient: horizontal;
  -moz-box-align: stretch;
  display: box;
  box-orient: horizontal;
  box-align: stretch;
  /* Modern browsers */
  display: flex;
  flex-direction: row;
  align-items: stretch;
  line-height: 1.8em;
}
.shortcut_key {
  display: inline-block;
  width: 21ex;
  text-align: right;
  font-family: monospace;
}
.shortcut_descr {
  display: inline-block;
  /* Old browsers */
  -webkit-box-flex: 1;
  -moz-box-flex: 1;
  box-flex: 1;
  /* Modern browsers */
  flex: 1;
}
span.save_widget {
  margin-top: 6px;
}
span.save_widget span.filename {
  height: 1em;
  line-height: 1em;
  padding: 3px;
  margin-left: 16px;
  border: none;
  font-size: 146.5%;
  border-radius: 2px;
}
span.save_widget span.filename:hover {
  background-color: #e6e6e6;
}
span.checkpoint_status,
span.autosave_status {
  font-size: small;
}
@media (max-width: 767px) {
  span.save_widget {
    font-size: small;
  }
  span.checkpoint_status,
  span.autosave_status {
    display: none;
  }
}
@media (min-width: 768px) and (max-width: 991px) {
  span.checkpoint_status {
    display: none;
  }
  span.autosave_status {
    font-size: x-small;
  }
}
.toolbar {
  padding: 0px;
  margin-left: -5px;
  margin-top: 2px;
  margin-bottom: 5px;
  box-sizing: border-box;
  -moz-box-sizing: border-box;
  -webkit-box-sizing: border-box;
}
.toolbar select,
.toolbar label {
  width: auto;
  vertical-align: middle;
  margin-right: 2px;
  margin-bottom: 0px;
  display: inline;
  font-size: 92%;
  margin-left: 0.3em;
  margin-right: 0.3em;
  padding: 0px;
  padding-top: 3px;
}
.toolbar .btn {
  padding: 2px 8px;
}
.toolbar .btn-group {
  margin-top: 0px;
  margin-left: 5px;
}
#maintoolbar {
  margin-bottom: -3px;
  margin-top: -8px;
  border: 0px;
  min-height: 27px;
  margin-left: 0px;
  padding-top: 11px;
  padding-bottom: 3px;
}
#maintoolbar .navbar-text {
  float: none;
  vertical-align: middle;
  text-align: right;
  margin-left: 5px;
  margin-right: 0px;
  margin-top: 0px;
}
.select-xs {
  height: 24px;
}
.pulse,
.dropdown-menu > li > a.pulse,
li.pulse > a.dropdown-toggle,
li.pulse.open > a.dropdown-toggle {
  background-color: #F37626;
  color: white;
}
/**
 * Primary styles
 *
 * Author: Jupyter Development Team
 */
/** WARNING IF YOU ARE EDITTING THIS FILE, if this is a .css file, It has a lot
 * of chance of beeing generated from the ../less/[samename].less file, you can
 * try to get back the less file by reverting somme commit in history
 **/
/*
 * We'll try to get something pretty, so we
 * have some strange css to have the scroll bar on
 * the left with fix button on the top right of the tooltip
 */
@-moz-keyframes fadeOut {
  from {
    opacity: 1;
  }
  to {
    opacity: 0;
  }
}
@-webkit-keyframes fadeOut {
  from {
    opacity: 1;
  }
  to {
    opacity: 0;
  }
}
@-moz-keyframes fadeIn {
  from {
    opacity: 0;
  }
  to {
    opacity: 1;
  }
}
@-webkit-keyframes fadeIn {
  from {
    opacity: 0;
  }
  to {
    opacity: 1;
  }
}
/*properties of tooltip after "expand"*/
.bigtooltip {
  overflow: auto;
  height: 200px;
  -webkit-transition-property: height;
  -webkit-transition-duration: 500ms;
  -moz-transition-property: height;
  -moz-transition-duration: 500ms;
  transition-property: height;
  transition-duration: 500ms;
}
/*properties of tooltip before "expand"*/
.smalltooltip {
  -webkit-transition-property: height;
  -webkit-transition-duration: 500ms;
  -moz-transition-property: height;
  -moz-transition-duration: 500ms;
  transition-property: height;
  transition-duration: 500ms;
  text-overflow: ellipsis;
  overflow: hidden;
  height: 80px;
}
.tooltipbuttons {
  position: absolute;
  padding-right: 15px;
  top: 0px;
  right: 0px;
}
.tooltiptext {
  /*avoid the button to overlap on some docstring*/
  padding-right: 30px;
}
.ipython_tooltip {
  max-width: 700px;
  /*fade-in animation when inserted*/
  -webkit-animation: fadeOut 400ms;
  -moz-animation: fadeOut 400ms;
  animation: fadeOut 400ms;
  -webkit-animation: fadeIn 400ms;
  -moz-animation: fadeIn 400ms;
  animation: fadeIn 400ms;
  vertical-align: middle;
  background-color: #f7f7f7;
  overflow: visible;
  border: #ababab 1px solid;
  outline: none;
  padding: 3px;
  margin: 0px;
  padding-left: 7px;
  font-family: monospace;
  min-height: 50px;
  -moz-box-shadow: 0px 6px 10px -1px #adadad;
  -webkit-box-shadow: 0px 6px 10px -1px #adadad;
  box-shadow: 0px 6px 10px -1px #adadad;
  border-radius: 2px;
  position: absolute;
  z-index: 1000;
}
.ipython_tooltip a {
  float: right;
}
.ipython_tooltip .tooltiptext pre {
  border: 0;
  border-radius: 0;
  font-size: 100%;
  background-color: #f7f7f7;
}
.pretooltiparrow {
  left: 0px;
  margin: 0px;
  top: -16px;
  width: 40px;
  height: 16px;
  overflow: hidden;
  position: absolute;
}
.pretooltiparrow:before {
  background-color: #f7f7f7;
  border: 1px #ababab solid;
  z-index: 11;
  content: "";
  position: absolute;
  left: 15px;
  top: 10px;
  width: 25px;
  height: 25px;
  -webkit-transform: rotate(45deg);
  -moz-transform: rotate(45deg);
  -ms-transform: rotate(45deg);
  -o-transform: rotate(45deg);
}
ul.typeahead-list i {
  margin-left: -10px;
  width: 18px;
}
ul.typeahead-list {
  max-height: 80vh;
  overflow: auto;
}
ul.typeahead-list > li > a {
  /** Firefox bug **/
  /* see https://github.com/jupyter/notebook/issues/559 */
  white-space: normal;
}
.cmd-palette .modal-body {
  padding: 7px;
}
.cmd-palette form {
  background: white;
}
.cmd-palette input {
  outline: none;
}
.no-shortcut {
  display: none;
}
.command-shortcut:before {
  content: "(command)";
  padding-right: 3px;
  color: #777777;
}
.edit-shortcut:before {
  content: "(edit)";
  padding-right: 3px;
  color: #777777;
}
#find-and-replace #replace-preview .match,
#find-and-replace #replace-preview .insert {
  background-color: #BBDEFB;
  border-color: #90CAF9;
  border-style: solid;
  border-width: 1px;
  border-radius: 0px;
}
#find-and-replace #replace-preview .replace .match {
  background-color: #FFCDD2;
  border-color: #EF9A9A;
  border-radius: 0px;
}
#find-and-replace #replace-preview .replace .insert {
  background-color: #C8E6C9;
  border-color: #A5D6A7;
  border-radius: 0px;
}
#find-and-replace #replace-preview {
  max-height: 60vh;
  overflow: auto;
}
#find-and-replace #replace-preview pre {
  padding: 5px 10px;
}
.terminal-app {
  background: #EEE;
}
.terminal-app #header {
  background: #fff;
  -webkit-box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
  box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
}
.terminal-app .terminal {
  width: 100%;
  float: left;
  font-family: monospace;
  color: white;
  background: black;
  padding: 0.4em;
  border-radius: 2px;
  -webkit-box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.4);
  box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.4);
}
.terminal-app .terminal,
.terminal-app .terminal dummy-screen {
  line-height: 1em;
  font-size: 14px;
}
.terminal-app .terminal .xterm-rows {
  padding: 10px;
}
.terminal-app .terminal-cursor {
  color: black;
  background: white;
}
.terminal-app #terminado-container {
  margin-top: 20px;
}
/*# sourceMappingURL=style.min.css.map */
    </style>
<style type="text/css">
    .highlight .hll { background-color: #ffffcc }
.highlight  { background: #f8f8f8; }
.highlight .c { color: #408080; font-style: italic } /* Comment */
.highlight .err { border: 1px solid #FF0000 } /* Error */
.highlight .k { color: #008000; font-weight: bold } /* Keyword */
.highlight .o { color: #666666 } /* Operator */
.highlight .ch { color: #408080; font-style: italic } /* Comment.Hashbang */
.highlight .cm { color: #408080; font-style: italic } /* Comment.Multiline */
.highlight .cp { color: #BC7A00 } /* Comment.Preproc */
.highlight .cpf { color: #408080; font-style: italic } /* Comment.PreprocFile */
.highlight .c1 { color: #408080; font-style: italic } /* Comment.Single */
.highlight .cs { color: #408080; font-style: italic } /* Comment.Special */
.highlight .gd { color: #A00000 } /* Generic.Deleted */
.highlight .ge { font-style: italic } /* Generic.Emph */
.highlight .gr { color: #FF0000 } /* Generic.Error */
.highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */
.highlight .gi { color: #00A000 } /* Generic.Inserted */
.highlight .go { color: #888888 } /* Generic.Output */
.highlight .gp { color: #000080; font-weight: bold } /* Generic.Prompt */
.highlight .gs { font-weight: bold } /* Generic.Strong */
.highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
.highlight .gt { color: #0044DD } /* Generic.Traceback */
.highlight .kc { color: #008000; font-weight: bold } /* Keyword.Constant */
.highlight .kd { color: #008000; font-weight: bold } /* Keyword.Declaration */
.highlight .kn { color: #008000; font-weight: bold } /* Keyword.Namespace */
.highlight .kp { color: #008000 } /* Keyword.Pseudo */
.highlight .kr { color: #008000; font-weight: bold } /* Keyword.Reserved */
.highlight .kt { color: #B00040 } /* Keyword.Type */
.highlight .m { color: #666666 } /* Literal.Number */
.highlight .s { color: #BA2121 } /* Literal.String */
.highlight .na { color: #7D9029 } /* Name.Attribute */
.highlight .nb { color: #008000 } /* Name.Builtin */
.highlight .nc { color: #0000FF; font-weight: bold } /* Name.Class */
.highlight .no { color: #880000 } /* Name.Constant */
.highlight .nd { color: #AA22FF } /* Name.Decorator */
.highlight .ni { color: #999999; font-weight: bold } /* Name.Entity */
.highlight .ne { color: #D2413A; font-weight: bold } /* Name.Exception */
.highlight .nf { color: #0000FF } /* Name.Function */
.highlight .nl { color: #A0A000 } /* Name.Label */
.highlight .nn { color: #0000FF; font-weight: bold } /* Name.Namespace */
.highlight .nt { color: #008000; font-weight: bold } /* Name.Tag */
.highlight .nv { color: #19177C } /* Name.Variable */
.highlight .ow { color: #AA22FF; font-weight: bold } /* Operator.Word */
.highlight .w { color: #bbbbbb } /* Text.Whitespace */
.highlight .mb { color: #666666 } /* Literal.Number.Bin */
.highlight .mf { color: #666666 } /* Literal.Number.Float */
.highlight .mh { color: #666666 } /* Literal.Number.Hex */
.highlight .mi { color: #666666 } /* Literal.Number.Integer */
.highlight .mo { color: #666666 } /* Literal.Number.Oct */
.highlight .sa { color: #BA2121 } /* Literal.String.Affix */
.highlight .sb { color: #BA2121 } /* Literal.String.Backtick */
.highlight .sc { color: #BA2121 } /* Literal.String.Char */
.highlight .dl { color: #BA2121 } /* Literal.String.Delimiter */
.highlight .sd { color: #BA2121; font-style: italic } /* Literal.String.Doc */
.highlight .s2 { color: #BA2121 } /* Literal.String.Double */
.highlight .se { color: #BB6622; font-weight: bold } /* Literal.String.Escape */
.highlight .sh { color: #BA2121 } /* Literal.String.Heredoc */
.highlight .si { color: #BB6688; font-weight: bold } /* Literal.String.Interpol */
.highlight .sx { color: #008000 } /* Literal.String.Other */
.highlight .sr { color: #BB6688 } /* Literal.String.Regex */
.highlight .s1 { color: #BA2121 } /* Literal.String.Single */
.highlight .ss { color: #19177C } /* Literal.String.Symbol */
.highlight .bp { color: #008000 } /* Name.Builtin.Pseudo */
.highlight .fm { color: #0000FF } /* Name.Function.Magic */
.highlight .vc { color: #19177C } /* Name.Variable.Class */
.highlight .vg { color: #19177C } /* Name.Variable.Global */
.highlight .vi { color: #19177C } /* Name.Variable.Instance */
.highlight .vm { color: #19177C } /* Name.Variable.Magic */
.highlight .il { color: #666666 } /* Literal.Number.Integer.Long */
    </style>
<style type="text/css">
    
/* Temporary definitions which will become obsolete with Notebook release 5.0 */
.ansi-black-fg { color: #3E424D; }
.ansi-black-bg { background-color: #3E424D; }
.ansi-black-intense-fg { color: #282C36; }
.ansi-black-intense-bg { background-color: #282C36; }
.ansi-red-fg { color: #E75C58; }
.ansi-red-bg { background-color: #E75C58; }
.ansi-red-intense-fg { color: #B22B31; }
.ansi-red-intense-bg { background-color: #B22B31; }
.ansi-green-fg { color: #00A250; }
.ansi-green-bg { background-color: #00A250; }
.ansi-green-intense-fg { color: #007427; }
.ansi-green-intense-bg { background-color: #007427; }
.ansi-yellow-fg { color: #DDB62B; }
.ansi-yellow-bg { background-color: #DDB62B; }
.ansi-yellow-intense-fg { color: #B27D12; }
.ansi-yellow-intense-bg { background-color: #B27D12; }
.ansi-blue-fg { color: #208FFB; }
.ansi-blue-bg { background-color: #208FFB; }
.ansi-blue-intense-fg { color: #0065CA; }
.ansi-blue-intense-bg { background-color: #0065CA; }
.ansi-magenta-fg { color: #D160C4; }
.ansi-magenta-bg { background-color: #D160C4; }
.ansi-magenta-intense-fg { color: #A03196; }
.ansi-magenta-intense-bg { background-color: #A03196; }
.ansi-cyan-fg { color: #60C6C8; }
.ansi-cyan-bg { background-color: #60C6C8; }
.ansi-cyan-intense-fg { color: #258F8F; }
.ansi-cyan-intense-bg { background-color: #258F8F; }
.ansi-white-fg { color: #C5C1B4; }
.ansi-white-bg { background-color: #C5C1B4; }
.ansi-white-intense-fg { color: #A1A6B2; }
.ansi-white-intense-bg { background-color: #A1A6B2; }

.ansi-bold { font-weight: bold; }

    </style>


<style type="text/css">
/* Overrides of notebook CSS for static HTML export */
body {
  overflow: visible;
  padding: 8px;
}

div#notebook {
  overflow: visible;
  border-top: none;
}@media print {
  div.cell {
    display: block;
    page-break-inside: avoid;
  } 
  div.output_wrapper { 
    display: block;
    page-break-inside: avoid; 
  }
  div.output { 
    display: block;
    page-break-inside: avoid; 
  }
}
</style>

<!-- Custom stylesheet, it must be in the same directory as the html file -->
<link rel="stylesheet" href="custom.css">

<!-- Loading mathjax macro -->
<!-- Load mathjax -->
    <script src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-AMS_HTML"></script>
    <!-- MathJax configuration -->
    <script type="text/x-mathjax-config">
    MathJax.Hub.Config({
        tex2jax: {
            inlineMath: [ ['$','$'], ["\\(","\\)"] ],
            displayMath: [ ['$$','$$'], ["\\[","\\]"] ],
            processEscapes: true,
            processEnvironments: true
        },
        // Center justify equations in code and markdown cells. Elsewhere
        // we use CSS to left justify single line equations in code cells.
        displayAlign: 'center',
        "HTML-CSS": {
            styles: {'.MathJax_Display': {"margin": 0}},
            linebreaks: { automatic: true }
        }
    });
    </script>
    <!-- End of mathjax configuration --></head>
<body>
  <div tabindex="-1" id="notebook" class="border-box-sizing">
    <div class="container" id="notebook-container">

<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h1 id="&#22270;&#20687;&#20998;&#31867;">&#22270;&#20687;&#20998;&#31867;<a class="anchor-link" href="#&#22270;&#20687;&#20998;&#31867;">&#182;</a></h1><p>在该项目中，你将会对来自 <a href="https://www.cs.toronto.edu/~kriz/cifar.html">CIFAR-10 数据集</a> 中的图像进行分类。数据集中图片的内容包括飞机（airplane）、狗（dogs）、猫（cats）及其他物体。你需要处理这些图像，接着对所有的样本训练一个卷积神经网络。</p>
<p>具体而言，在项目中你要对图像进行正规化处理（normalization)，同时还要对图像的标签进行 one-hot 编码。接着你将会应用到你所学的技能来搭建一个具有卷积层、最大池化（Max Pooling）层、Dropout  层及全连接（fully connected）层的神经网络。最后，你会训练你的神经网络，会得到你神经网络在样本图像上的预测结果。</p>
<h2 id="&#19979;&#36733;&#25968;&#25454;">&#19979;&#36733;&#25968;&#25454;<a class="anchor-link" href="#&#19979;&#36733;&#25968;&#25454;">&#182;</a></h2><p>运行如下代码下载 <a href="https://www.cs.toronto.edu/~kriz/cifar-10-python.tar.gz">CIFAR-10 dataset for python</a>。</p>

</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[2]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd">DON&#39;T MODIFY ANYTHING IN THIS CELL THAT IS BELOW THIS LINE</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="kn">from</span> <span class="nn">urllib.request</span> <span class="k">import</span> <span class="n">urlretrieve</span>
<span class="kn">from</span> <span class="nn">os.path</span> <span class="k">import</span> <span class="n">isfile</span><span class="p">,</span> <span class="n">isdir</span>
<span class="kn">from</span> <span class="nn">tqdm</span> <span class="k">import</span> <span class="n">tqdm</span>
<span class="kn">import</span> <span class="nn">problem_unittests</span> <span class="k">as</span> <span class="nn">tests</span>
<span class="kn">import</span> <span class="nn">tarfile</span>

<span class="n">cifar10_dataset_folder_path</span> <span class="o">=</span> <span class="s1">&#39;cifar-10-batches-py&#39;</span>

<span class="k">class</span> <span class="nc">DLProgress</span><span class="p">(</span><span class="n">tqdm</span><span class="p">):</span>
    <span class="n">last_block</span> <span class="o">=</span> <span class="mi">0</span>

    <span class="k">def</span> <span class="nf">hook</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">block_num</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">block_size</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">total_size</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
        <span class="bp">self</span><span class="o">.</span><span class="n">total</span> <span class="o">=</span> <span class="n">total_size</span>
        <span class="bp">self</span><span class="o">.</span><span class="n">update</span><span class="p">((</span><span class="n">block_num</span> <span class="o">-</span> <span class="bp">self</span><span class="o">.</span><span class="n">last_block</span><span class="p">)</span> <span class="o">*</span> <span class="n">block_size</span><span class="p">)</span>
        <span class="bp">self</span><span class="o">.</span><span class="n">last_block</span> <span class="o">=</span> <span class="n">block_num</span>

<span class="k">if</span> <span class="ow">not</span> <span class="n">isfile</span><span class="p">(</span><span class="s1">&#39;cifar-10-python.tar.gz&#39;</span><span class="p">):</span>
    <span class="k">with</span> <span class="n">DLProgress</span><span class="p">(</span><span class="n">unit</span><span class="o">=</span><span class="s1">&#39;B&#39;</span><span class="p">,</span> <span class="n">unit_scale</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">miniters</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">desc</span><span class="o">=</span><span class="s1">&#39;CIFAR-10 Dataset&#39;</span><span class="p">)</span> <span class="k">as</span> <span class="n">pbar</span><span class="p">:</span>
        <span class="n">urlretrieve</span><span class="p">(</span>
            <span class="s1">&#39;https://www.cs.toronto.edu/~kriz/cifar-10-python.tar.gz&#39;</span><span class="p">,</span>
            <span class="s1">&#39;cifar-10-python.tar.gz&#39;</span><span class="p">,</span>
            <span class="n">pbar</span><span class="o">.</span><span class="n">hook</span><span class="p">)</span>

<span class="k">if</span> <span class="ow">not</span> <span class="n">isdir</span><span class="p">(</span><span class="n">cifar10_dataset_folder_path</span><span class="p">):</span>
    <span class="k">with</span> <span class="n">tarfile</span><span class="o">.</span><span class="n">open</span><span class="p">(</span><span class="s1">&#39;cifar-10-python.tar.gz&#39;</span><span class="p">)</span> <span class="k">as</span> <span class="n">tar</span><span class="p">:</span>
        <span class="n">tar</span><span class="o">.</span><span class="n">extractall</span><span class="p">()</span>
        <span class="n">tar</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>


<span class="n">tests</span><span class="o">.</span><span class="n">test_folder_path</span><span class="p">(</span><span class="n">cifar10_dataset_folder_path</span><span class="p">)</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt"></div>


<div class="output_subarea output_stream output_stderr output_text">
<pre>CIFAR-10 Dataset: 171MB [01:13, 2.32MB/s]                                                        
</pre>
</div>
</div>

<div class="output_area">

<div class="prompt"></div>


<div class="output_subarea output_stream output_stdout output_text">
<pre>All files found!
</pre>
</div>
</div>

</div>
</div>

</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h2 id="&#25506;&#32034;&#25968;&#25454;&#38598;">&#25506;&#32034;&#25968;&#25454;&#38598;<a class="anchor-link" href="#&#25506;&#32034;&#25968;&#25454;&#38598;">&#182;</a></h2><p>为防止在运行过程中内存不足的问题，该数据集已经事先被分成了5批（batch），名为<code>data_batch_1</code>、<code>data_batch_2</code>等。每一批中都含有 <em>图像</em> 及对应的 <em>标签</em>，都是如下类别中的一种：</p>
<ul>
<li>飞机</li>
<li>汽车</li>
<li>鸟</li>
<li>鹿</li>
<li>狗</li>
<li>青蛙</li>
<li>马</li>
<li>船</li>
<li>卡车</li>
</ul>
<p>理解数据集也是对数据进行预测的一部分。修改如下代码中的 <code>batch_id</code> 和 <code>sample_id</code>，看看输出的图像是什么样子。其中，<code>batch_id</code> 代表着批次数（1-5），<code>sample_id</code> 代表着在该批内图像及标签的编号。</p>
<p>你可以尝试回答如下问题：</p>
<ul>
<li>可能出现的 <em>标签</em> 都包括哪些？</li>
<li>图像数据的取值范围是多少？</li>
<li><em>标签</em> 的排列顺序是随机的还是有序的？</li>
</ul>
<p>对这些问题的回答，会有助于更好地处理数据，并能更好地进行预测。</p>

</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[18]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="o">%</span><span class="k">matplotlib</span> inline
<span class="o">%</span><span class="k">config</span> InlineBackend.figure_format = &#39;retina&#39;

<span class="kn">import</span> <span class="nn">helper</span>
<span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span>

<span class="c1"># Explore the dataset</span>
<span class="n">batch_id</span> <span class="o">=</span> <span class="mi">5</span>
<span class="n">sample_id</span> <span class="o">=</span> <span class="mi">9999</span>
<span class="n">helper</span><span class="o">.</span><span class="n">display_stats</span><span class="p">(</span><span class="n">cifar10_dataset_folder_path</span><span class="p">,</span> <span class="n">batch_id</span><span class="p">,</span> <span class="n">sample_id</span><span class="p">)</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt"></div>


<div class="output_subarea output_stream output_stdout output_text">
<pre>
Stats of batch 5:
Samples: 10000
Label Counts: {0: 1014, 1: 1014, 2: 952, 3: 1016, 4: 997, 5: 1025, 6: 980, 7: 977, 8: 1003, 9: 1022}
First 20 Labels: [1, 8, 5, 1, 5, 7, 4, 3, 8, 2, 7, 2, 0, 1, 5, 9, 6, 2, 0, 8]

Example of Image 9999:
Image - Min Value: 4 Max Value: 255
Image - Shape: (32, 32, 3)
Label - Label Id: 1 Name: automobile
</pre>
</div>
</div>

<div class="output_area">

<div class="prompt"></div>




<div class="output_png output_subarea ">
<img src="
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
XrSY5wo39u49bJ45/Oh6alfn1YvNM5O957ldB6fNM7fXx6lds7P2Ap2IiC+dtd8f/WSpzXLSfmyH
l86ndk33cmUnv1i0l+G8HrlrthHtjTGns7PUrqNlbm40aD+25TLRhBO5cqvnuZh4IXzRA0Bhgh4A
ChP0AFCYoAeAwgQ9ABQm6AGgMEEPAIUJegAoTNADQGGCHgAKE/QAUJigB4DCBD0AFFa2vW4yWUvN
9Xvt7XCb21upXe+///vNM3t7z1K79pOtZpcuvdI8s702Se06f9L+G3sv76Z29V/NtRvOTo/ad60l
W95O21u8JoPcI324kbhmw1yT4sbmudRcZzxsnlkmWsYiIlaJ9rrPkq1rz1a5tsfpuP38Hw9zFWrd
eXsN4Olpe7teRMRBslFuvd9+zQb93POy6LffV09Oc/fii+CLHgAKE/QAUJigB4DCBD0AFCboAaAw
QQ8AhQl6AChM0ANAYYIeAAoT9ABQmKAHgMIEPQAUVrbUZmNjJzW3XLUXD0xnubKC11670jzz8kvt
JTMREatsuUeiX6LT3n8RERHLeXspyNEyVwhyd9BekBIRMX73WvPMyZOnqV2Hi/ZrNugNUruuf/Tj
5pmdTq6sZ5AojImI+GzeXsiynOcKUvrRfl9t7mykdl39xhupuQtb7fsuvZQr4Npcay8Jmy2OU7s+
f3IjNXc2ay+cOotcyc8i8d7pD5MvxhfAFz0AFCboAaAwQQ8AhQl6AChM0ANAYYIeAAoT9ABQmKAH
gMIEPQAUJugBoDBBDwCFCXoAKEzQA0BhZdvr5onmr19qn1vOF6lN01l7A9I8MRMRMZ/m5paJ+rrl
fJraNZu1zz17/jy16+H9h7m5J/vNM5/cupPadXrS3v41HOVa+SYbm80zX3733dSuiy9dTM2dLtrv
j9OT09Suo+OT5pkLF3PH9bt/L3ceX9rebp7pLHJtfhHt77jOLPdevDjKncfDRfuzeXR2mNq1P33W
PHMw3UvtehF80QNAYYIeAAoT9ABQmKAHgMIEPQAUJugBoDBBDwCFCXoAKEzQA0Bhgh4AChP0AFCY
oAeAwsqW2pydJcssjtpLDlaRK4rodDq/kZmIiOUqVzDRifZ93cEgtSvzr3M0Gad2jdcnqbnuk/Yy
i5fO76R2zRcbzTOvXr6c2vVHf/xPm2e+dPVqatdkmLw/Or3mmUWycGqRuO93d3LXeTgcpea63fbf
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
mKAHgMIEPQAUJugBoDBBDwCFCXoAKEzQA0Bhddvr/u2/Th3YYjF/0T/lb7U2GTXP3L57L7VrsMod
V3fQ/hsTRVcREfHGG1eaZ/q9XNPVZC3XrDUctp+P0ThxDiOil2jjilXu5A/Hk+aZfubeiIj7Dx6l
5n768180z9y5n3te4ui4eWSaPPdHs1lqrj9ob/MbTdqvc0TEKHF/dDP3b0QsFrnGwbVx+zO9NVxL
7frn3/xnzTPvv//11K719Q3tdQDA307QA0Bhgh4AChP0AFCYoAeAwgQ9ABQm6AGgMEEPAIUJegAo
TNADQGGCHgAKE/QAUFh7K8L/J6anp6m5bAFJxnw6bZ7ZXM+VMKzmyVKbfnsxxUc/upHatZE4to2N
XEnHdJabmySKMxazXIHOKLFrkigfiYiYT9ufl7OT9vs3ImJ3Yz0194dff7d5pt/PFYnsPX/ePPPw
0dPUrps3P0vN3fjk0+aZo4PD1K7JpP2aZQt0hon7PiKi22l/Vx2fnKR2HZ+2z62vb6R2vQi+6AGg
MEEPAIUJegAoTNADQGGCHgAKE/QAUJigB4DCBD0AFCboAaAwQQ8AhQl6AChM0ANAYYIeAAor2163
s51rChoM2k/JMtkM9yzRkPXo/qPUrrVJrhFqbb29ze/unTupXdvb7e11l197JbVrPM61G24lmtfO
RsepXeNE+9dsPdco1++3X+fRKNdCN1/MUnOzWftztjbupHad39lqnrl04Xxq11e+fDU19w9P/rB5
5v69+6ldnyYa9o6Oc81wo1Gu9W40ar+Hz5/fTe366lffSs39tviiB4DCBD0AFCboAaAwQQ8AhQl6
AChM0ANAYYIeAAoT9ABQmKAHgMIEPQAUJugBoDBBDwCFCXoAKKxue93OZmpusVg2z8xzhWGxm/mN
i0Vq18HhYWru+fOj5pkne89Su2591t56t7vd3jIWEXF6kmuvOzk+a57Z3Mw1B67P2lveTk9zx7W2
1t5E1+/lvhOWy/ZnLCKi123fNxykVsVy0d6UN0tcr4iI/qC9dS0iYjvRpLiTbMq7du3t5pn5LPeu
2t/fT811B73mmXeuXUvt+sLl15pnMvdURES3938f077oAaAwQQ8AhQl6AChM0ANAYYIeAAoT9ABQ
mKAHgMIEPQAUJugBoDBBDwCFCXoAKEzQA0BhZUttYtVJjZ1NM0UiuTKLWLWXe6wniiwiIvrDYWru
4xufNs/MEsVAERGf37nfPLORPB9ffP1yam65ai+mODk9Se3aOGlvS9rZ3kjtmibu++xxDfq5pple
Ym4+zxWJjMbtRUTjyVpqV2eVK3+ZnrYfW7fbXvwSETGft//G1Sq1Kl66dCE1d/Hi+eaZYT93Ph4/
fNA8s76ZK1rb2tpNzf0qX/QAUJigB4DCBD0AFCboAaAwQQ8AhQl6AChM0ANAYYIeAAoT9ABQmKAH
gMIEPQAUJugBoDBBDwCFlW2vOzjKNWudzdobw2aJ5q+IiNUy0fKWaE+LiOgnW5pefuli88z73/ha
alemQa3XyVVkPdvfT82tb7Q3UI1HuSbFw8PD5pnpLHcv7u60N2QtI3dcJ3GWmuv32u/hZaJ1LSJi
OD5tnzk+Tu0ajdqb8iIiJmvtzY29bvLbLvPe6eR2HSTu+4iIx0+eNM8Mk+f+4sX2hr21tUlq17V3
tNcBAH8HQQ8AhQl6AChM0ANAYYIeAAoT9ABQmKAHgMIEPQAUJugBoDBBDwCFCXoAKEzQA0BhZUtt
9g9yxQjzRXt5QzdZ7hHRXsjSScxERHSWubn1tbXmmatffD216+i4vYjo4PAgtWuZuM4REXfv3m+e
mUyGqV2vvvJy88xsliuMefCw/bjW19oLfiIi1tbb76lfai+Nmc1y13l40n7NBsPcdR4MB6m5/sHz
5pnhIPcbMwU640nuOnc6uQKuwaA9zpaLXAnUz278vHlmtcq9g6+9kysJ+1W+6AGgMEEPAIUJegAo
TNADQGGCHgAKE/QAUJigB4DCBD0AFCboAaAwQQ8AhQl6AChM0ANAYYIeAArrZBt1AID/9/miB4DC
BD0AFCboAaAwQQ8AhQl6AChM0ANAYYIeAAoT9ABQmKAHgMIEPQAUJugBoDBBDwCFCXoAKEzQA0Bh
gh4AChP0AFCYoAeAwgQ9ABQm6AGgMEEPAIUJegAoTNADQGGCHgAKE/QAUJigB4DCBD0AFCboAaAw
QQ8AhQl6AChM0ANAYYIeAAoT9ABQmKAHgMIEPQAUJugBoDBBDwCFCXoAKEzQA0Bhgh4AChP0AFCY
oAeAwgQ9ABQm6AGgMEEPAIUJegAoTNADQGH/B9XXAF5GKwfsAAAAAElFTkSuQmCC
"
width=253
height=250
>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h2 id="&#22270;&#20687;&#39044;&#22788;&#29702;&#21151;&#33021;&#30340;&#23454;&#29616;">&#22270;&#20687;&#39044;&#22788;&#29702;&#21151;&#33021;&#30340;&#23454;&#29616;<a class="anchor-link" href="#&#22270;&#20687;&#39044;&#22788;&#29702;&#21151;&#33021;&#30340;&#23454;&#29616;">&#182;</a></h2><h3 id="&#27491;&#35268;&#21270;">&#27491;&#35268;&#21270;<a class="anchor-link" href="#&#27491;&#35268;&#21270;">&#182;</a></h3><p>在如下的代码中，修改 <code>normalize</code> 函数，使之能够对输入的图像数据 <code>x</code> 进行处理，输出一个经过正规化的、Numpy array 格式的图像数据。</p>
<p><strong>注意：</strong>
处理后的值应当在 $[0,1]$ 的范围之内。返回值应当和输入值具有相同的形状。</p>

</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[10]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="k">def</span> <span class="nf">normalize</span><span class="p">(</span><span class="n">x</span><span class="p">):</span>
    <span class="sd">&quot;&quot;&quot;</span>
<span class="sd">    Normalize a list of sample image data in the range of 0 to 1</span>
<span class="sd">    : x: List of image data.  The image shape is (32, 32, 3)</span>
<span class="sd">    : return: Numpy array of normalize data</span>
<span class="sd">    &quot;&quot;&quot;</span>
    <span class="c1"># TODO: Implement Function</span>
    <span class="k">return</span> <span class="p">(</span><span class="n">x</span> <span class="o">-</span> <span class="n">np</span><span class="o">.</span><span class="n">min</span><span class="p">(</span><span class="n">x</span><span class="p">))</span><span class="o">/</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">max</span><span class="p">(</span><span class="n">x</span><span class="p">)</span> <span class="o">-</span> <span class="n">np</span><span class="o">.</span><span class="n">min</span><span class="p">(</span><span class="n">x</span><span class="p">))</span>


<span class="sd">&quot;&quot;&quot;</span>
<span class="sd">DON&#39;T MODIFY ANYTHING IN THIS CELL THAT IS BELOW THIS LINE</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="n">tests</span><span class="o">.</span><span class="n">test_normalize</span><span class="p">(</span><span class="n">normalize</span><span class="p">)</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt"></div>


<div class="output_subarea output_stream output_stdout output_text">
<pre>Tests Passed
</pre>
</div>
</div>

</div>
</div>

</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h3 id="One-hot-&#32534;&#30721;">One-hot &#32534;&#30721;<a class="anchor-link" href="#One-hot-&#32534;&#30721;">&#182;</a></h3><p>在如下代码中，你将继续实现预处理的功能，实现一个 <code>one_hot_encode</code> 函数。函数的输入 <code>x</code> 是 <em>标签</em> 构成的列表，返回值是经过 One_hot 处理过后的这列 <em>标签</em> 对应的 One_hot 编码，以 Numpy array 储存。其中，<em>标签</em> 的取值范围从0到9。每次调用该函数时，对相同的标签值，它输出的编码也是相同的。请确保在函数外保存编码的映射（map of encodings）。</p>
<p><strong>提示：</strong></p>
<p>你可以尝试使用 sklearn preprocessing 模块中的 <code>LabelBinarizer</code> 函数。</p>

</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[13]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="kn">from</span> <span class="nn">sklearn.preprocessing</span> <span class="k">import</span> <span class="n">LabelBinarizer</span>
<span class="c1"># 预先训练好encoder，确保一定会编码为十类</span>
<span class="n">lb</span> <span class="o">=</span> <span class="n">LabelBinarizer</span><span class="p">()</span>
<span class="n">lb</span><span class="o">.</span><span class="n">fit</span><span class="p">([</span><span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">3</span><span class="p">,</span> <span class="mi">4</span><span class="p">,</span> <span class="mi">5</span><span class="p">,</span> <span class="mi">6</span><span class="p">,</span> <span class="mi">7</span><span class="p">,</span> <span class="mi">8</span><span class="p">,</span> <span class="mi">9</span><span class="p">])</span>

<span class="k">def</span> <span class="nf">one_hot_encode</span><span class="p">(</span><span class="n">x</span><span class="p">):</span>
    <span class="sd">&quot;&quot;&quot;</span>
<span class="sd">    One hot encode a list of sample labels. Return a one-hot encoded vector for each label.</span>
<span class="sd">    : x: List of sample Labels</span>
<span class="sd">    : return: Numpy array of one-hot encoded labels</span>
<span class="sd">    &quot;&quot;&quot;</span>
    <span class="c1"># TODO: Implement Function</span>
    <span class="k">return</span> <span class="n">lb</span><span class="o">.</span><span class="n">transform</span><span class="p">(</span><span class="n">x</span><span class="p">)</span>


<span class="sd">&quot;&quot;&quot;</span>
<span class="sd">DON&#39;T MODIFY ANYTHING IN THIS CELL THAT IS BELOW THIS LINE</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="n">tests</span><span class="o">.</span><span class="n">test_one_hot_encode</span><span class="p">(</span><span class="n">one_hot_encode</span><span class="p">)</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt"></div>


<div class="output_subarea output_stream output_stdout output_text">
<pre>Tests Passed
</pre>
</div>
</div>

</div>
</div>

</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h3 id="&#38543;&#26426;&#25171;&#20081;&#25968;&#25454;">&#38543;&#26426;&#25171;&#20081;&#25968;&#25454;<a class="anchor-link" href="#&#38543;&#26426;&#25171;&#20081;&#25968;&#25454;">&#182;</a></h3><p>正如你在上方探索数据部分所看到的，样本的顺序已经被随机打乱了。尽管再随机处理一次也没问题，不过对于该数据我们没必要再进行一次相关操作了。</p>

</div>
</div>
</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h2 id="&#23545;&#25152;&#26377;&#22270;&#20687;&#25968;&#25454;&#36827;&#34892;&#39044;&#22788;&#29702;&#24182;&#20445;&#23384;&#32467;&#26524;">&#23545;&#25152;&#26377;&#22270;&#20687;&#25968;&#25454;&#36827;&#34892;&#39044;&#22788;&#29702;&#24182;&#20445;&#23384;&#32467;&#26524;<a class="anchor-link" href="#&#23545;&#25152;&#26377;&#22270;&#20687;&#25968;&#25454;&#36827;&#34892;&#39044;&#22788;&#29702;&#24182;&#20445;&#23384;&#32467;&#26524;">&#182;</a></h2><p>运行如下代码，它将会预处理所有的 CIFAR-10 数据并将它另存为文件。此外，如下的代码还将会把 10% 的训练数据留出作为验证数据。</p>

</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[19]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd">DON&#39;T MODIFY ANYTHING IN THIS CELL</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="c1"># Preprocess Training, Validation, and Testing Data</span>
<span class="n">helper</span><span class="o">.</span><span class="n">preprocess_and_save_data</span><span class="p">(</span><span class="n">cifar10_dataset_folder_path</span><span class="p">,</span> <span class="n">normalize</span><span class="p">,</span> <span class="n">one_hot_encode</span><span class="p">)</span>
</pre></div>

</div>
</div>
</div>

</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h1 id="&#26816;&#26597;&#28857;">&#26816;&#26597;&#28857;<a class="anchor-link" href="#&#26816;&#26597;&#28857;">&#182;</a></h1><p>这是你的首个检查点。因为预处理完的数据已经被保存到硬盘上了，所以如果你需要回顾或重启该 notebook，你可以在这里重新开始。</p>

</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[1]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd">DON&#39;T MODIFY ANYTHING IN THIS CELL</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="kn">import</span> <span class="nn">pickle</span>
<span class="kn">import</span> <span class="nn">problem_unittests</span> <span class="k">as</span> <span class="nn">tests</span>
<span class="kn">import</span> <span class="nn">helper</span>

<span class="c1"># Load the Preprocessed Validation data</span>
<span class="n">valid_features</span><span class="p">,</span> <span class="n">valid_labels</span> <span class="o">=</span> <span class="n">pickle</span><span class="o">.</span><span class="n">load</span><span class="p">(</span><span class="nb">open</span><span class="p">(</span><span class="s1">&#39;preprocess_validation.p&#39;</span><span class="p">,</span> <span class="n">mode</span><span class="o">=</span><span class="s1">&#39;rb&#39;</span><span class="p">))</span>

<span class="nb">print</span><span class="p">(</span><span class="s2">&quot;features Dimension: &quot;</span><span class="p">,</span> <span class="n">valid_features</span><span class="o">.</span><span class="n">shape</span><span class="p">)</span>
<span class="nb">print</span><span class="p">(</span><span class="s2">&quot;labels Dimension&quot;</span><span class="p">,</span> <span class="n">valid_labels</span><span class="o">.</span><span class="n">shape</span><span class="p">)</span>
<span class="nb">print</span><span class="p">(</span><span class="s2">&quot;Example: label for #0 image is&quot;</span><span class="p">,</span> <span class="n">valid_labels</span><span class="p">[</span><span class="mi">0</span><span class="p">,:])</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt"></div>


<div class="output_subarea output_stream output_stdout output_text">
<pre>features Dimension:  (5000, 32, 32, 3)
labels Dimension (5000, 10)
Example: label for #0 image is [0 0 0 0 1 0 0 0 0 0]
</pre>
</div>
</div>

</div>
</div>

</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h2 id="&#25645;&#24314;&#31070;&#32463;&#32593;&#32476;">&#25645;&#24314;&#31070;&#32463;&#32593;&#32476;<a class="anchor-link" href="#&#25645;&#24314;&#31070;&#32463;&#32593;&#32476;">&#182;</a></h2><p>为搭建神经网络，你需要将搭建每一层的过程封装到一个函数中。大部分的代码你在函数外已经见过。为能够更透彻地测试你的代码，我们要求你把每一层都封装到一个函数中。这能够帮助我们给予你更好的回复，同时还能让我们使用 unittests 在你提交报告前检测出你项目中的小问题。</p>
<blockquote><p><strong>注意：</strong> 如果你时间紧迫，那么在该部分我们为你提供了一个便捷方法。在接下来的一些问题中，你可以使用来自 <a href="https://www.tensorflow.org/api_docs/python/tf/layers">TensorFlow Layers</a> 或 <a href="https://www.tensorflow.org/api_guides/python/contrib.layers">TensorFlow Layers (contrib)</a> 包中的函数来搭建各层，不过不可以用他们搭建卷积-最大池化层。TF Layers 和 Keras 及 TFLean 中对层的抽象比较相似，所以你应该很容易上手。</p>
<p>不过，如果你希望能够更多地实践，我们希望你能够在<strong>不</strong>使用 TF Layers 的情况下解决所有问题。你依然<strong>能</strong>使用来自其他包但和 layers 中重名的函数。例如，你可以使用 TF Neural Network 版本的 <code>conv_2d</code><a href="https://www.tensorflow.org/api_docs/python/tf/nn/conv2d">tf.nn.conv2d</a>.</p>
</blockquote>
<p>让我们开始吧！</p>
<h3 id="&#36755;&#20837;">&#36755;&#20837;<a class="anchor-link" href="#&#36755;&#20837;">&#182;</a></h3><p>神经网络需要能够读取图像数据、经 one-hot 编码之后的标签及 dropout 中的保留概率。修改如下函数：</p>
<ul>
<li>修改 <code>neural_net_image_input</code> 函数：<ul>
<li>返回 <a href="https://www.tensorflow.org/api_docs/python/tf/placeholder">TF Placeholder</a>。</li>
<li>使用 <code>image_shape</code> 设定形状，设定批大小（batch size)为 <code>None</code>。</li>
<li>使用 <a href="https://www.tensorflow.org/api_docs/python/tf/placeholder">TF Placeholder</a> 中的 <code>Name</code> 参数，命名该 TensorFlow placeholder 为 "x"。</li>
</ul>
</li>
</ul>
<ul>
<li>修改 <code>neural_net_label_input</code> 函数： <ul>
<li>返回 <a href="https://www.tensorflow.org/api_docs/python/tf/placeholder">TF Placeholder</a>。</li>
<li>使用 <code>n_classes</code> 设定形状，设定批大小（batch size)为 <code>None</code>。</li>
<li>使用 <a href="https://www.tensorflow.org/api_docs/python/tf/placeholder">TF Placeholder</a> 中的 <code>Name</code> 参数，命名该 TensorFlow placeholder 为 "y"。</li>
</ul>
</li>
</ul>
<ul>
<li>修改 <code>neural_net_keep_prob_input</code> 函数：<ul>
<li>返回 <a href="https://www.tensorflow.org/api_docs/python/tf/placeholder">TF Placeholder</a> 作为 dropout 的保留概率（keep probability）。</li>
<li>使用 <a href="https://www.tensorflow.org/api_docs/python/tf/placeholder">TF Placeholder</a> 中的 <code>Name</code> 参数，命名该 TensorFlow placeholder 为 "keep_prob"。</li>
</ul>
</li>
</ul>
<p>我们会在项目最后使用这些名字，来载入你储存的模型。</p>
<p><strong>注意：</strong>在 TensorFlow 中，对形状设定为 <code>None</code>，能帮助设定一个动态的大小。</p>

</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[2]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="kn">import</span> <span class="nn">tensorflow</span> <span class="k">as</span> <span class="nn">tf</span>

<span class="c1"># 整个网络的输入尺寸：</span>
<span class="c1"># 第一维：batch的大小（就是样本数量，比如128张样本图）</span>
<span class="c1"># 第二维：长</span>
<span class="c1"># 第三维：宽</span>
<span class="c1"># 第四维：颜色通道数（一般都是RGB图片，因此是三个通道）</span>
<span class="k">def</span> <span class="nf">neural_net_image_input</span><span class="p">(</span><span class="n">image_shape</span><span class="p">):</span>
    <span class="sd">&quot;&quot;&quot;</span>
<span class="sd">    Return a Tensor for a batch of image input</span>
<span class="sd">    : image_shape: Shape of the images</span>
<span class="sd">    : return: Tensor for image input.</span>
<span class="sd">    &quot;&quot;&quot;</span>
    <span class="c1"># TODO: Implement Function</span>
    <span class="k">return</span> <span class="n">tf</span><span class="o">.</span><span class="n">placeholder</span><span class="p">(</span><span class="n">tf</span><span class="o">.</span><span class="n">float32</span><span class="p">,</span> <span class="n">shape</span><span class="o">=</span><span class="p">[</span><span class="kc">None</span><span class="p">,</span> <span class="n">image_shape</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">image_shape</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="n">image_shape</span><span class="p">[</span><span class="mi">2</span><span class="p">]],</span> <span class="n">name</span><span class="o">=</span><span class="s1">&#39;x&#39;</span><span class="p">)</span>
    <span class="c1"># 用加号性质合并，语法更简洁</span>
    <span class="k">return</span> <span class="n">tf</span><span class="o">.</span><span class="n">placeholder</span><span class="p">(</span><span class="n">tf</span><span class="o">.</span><span class="n">float32</span><span class="p">,</span> <span class="n">shape</span><span class="o">=</span><span class="p">[[</span><span class="kc">None</span><span class="p">,]</span> <span class="o">+</span> <span class="n">image_shape</span><span class="p">],</span> <span class="n">name</span><span class="o">=</span><span class="s1">&#39;x&#39;</span><span class="p">)</span>
    <span class="c1"># TensorFlow的shape参数既允许list也允许tuple类型</span>
    <span class="k">return</span> <span class="n">tf</span><span class="o">.</span><span class="n">placeholder</span><span class="p">(</span><span class="n">tf</span><span class="o">.</span><span class="n">float32</span><span class="p">,</span> <span class="n">shape</span><span class="o">=</span><span class="p">((</span><span class="kc">None</span><span class="p">,)</span> <span class="o">+</span> <span class="n">image_shape</span><span class="p">),</span> <span class="n">name</span><span class="o">=</span><span class="s1">&#39;x&#39;</span><span class="p">)</span>   

<span class="c1"># 整个网络的输出结果</span>
<span class="c1"># 第一维：样本（对应于输入的每一张样本图）</span>
<span class="c1"># 第二维：分类号（由于采用onehot编码，因此有多少种分类这个维度就有多长）</span>
<span class="k">def</span> <span class="nf">neural_net_label_input</span><span class="p">(</span><span class="n">n_classes</span><span class="p">):</span>
    <span class="sd">&quot;&quot;&quot;</span>
<span class="sd">    Return a Tensor for a batch of label input</span>
<span class="sd">    : n_classes: Number of classes</span>
<span class="sd">    : return: Tensor for label input.</span>
<span class="sd">    &quot;&quot;&quot;</span>
    <span class="c1"># TODO: Implement Function</span>
    <span class="k">return</span> <span class="n">tf</span><span class="o">.</span><span class="n">placeholder</span><span class="p">(</span><span class="n">tf</span><span class="o">.</span><span class="n">float32</span><span class="p">,</span> <span class="n">shape</span><span class="o">=</span><span class="p">[</span><span class="kc">None</span><span class="p">,</span> <span class="n">n_classes</span><span class="p">],</span> <span class="n">name</span><span class="o">=</span><span class="s1">&#39;y&#39;</span><span class="p">)</span>

<span class="c1"># Drop-out专用</span>
<span class="k">def</span> <span class="nf">neural_net_keep_prob_input</span><span class="p">():</span>
    <span class="sd">&quot;&quot;&quot;</span>
<span class="sd">    Return a Tensor for keep probability</span>
<span class="sd">    : return: Tensor for keep probability.</span>
<span class="sd">    &quot;&quot;&quot;</span>
    <span class="c1"># TODO: Implement Function</span>
    <span class="k">return</span> <span class="n">tf</span><span class="o">.</span><span class="n">placeholder</span><span class="p">(</span><span class="n">tf</span><span class="o">.</span><span class="n">float32</span><span class="p">,</span> <span class="n">name</span><span class="o">=</span><span class="s1">&#39;keep_prob&#39;</span><span class="p">)</span>


<span class="sd">&quot;&quot;&quot;</span>
<span class="sd">DON&#39;T MODIFY ANYTHING IN THIS CELL THAT IS BELOW THIS LINE</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="n">tf</span><span class="o">.</span><span class="n">reset_default_graph</span><span class="p">()</span>
<span class="n">tests</span><span class="o">.</span><span class="n">test_nn_image_inputs</span><span class="p">(</span><span class="n">neural_net_image_input</span><span class="p">)</span>
<span class="n">tests</span><span class="o">.</span><span class="n">test_nn_label_inputs</span><span class="p">(</span><span class="n">neural_net_label_input</span><span class="p">)</span>
<span class="n">tests</span><span class="o">.</span><span class="n">test_nn_keep_prob_inputs</span><span class="p">(</span><span class="n">neural_net_keep_prob_input</span><span class="p">)</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt"></div>


<div class="output_subarea output_stream output_stdout output_text">
<pre>Image Input Tests Passed.
Label Input Tests Passed.
Keep Prob Tests Passed.
</pre>
</div>
</div>

</div>
</div>

</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h3 id="&#21367;&#31215;-&#26368;&#22823;&#27744;&#65288;Convolution-and-Max-Pooling&#65289;&#21270;&#23618;">&#21367;&#31215;-&#26368;&#22823;&#27744;&#65288;Convolution and Max Pooling&#65289;&#21270;&#23618;<a class="anchor-link" href="#&#21367;&#31215;-&#26368;&#22823;&#27744;&#65288;Convolution-and-Max-Pooling&#65289;&#21270;&#23618;">&#182;</a></h3><p>卷积层在图像处理中取得了不小的成功。在这部分的代码中，你需要修改 <code>conv2d_maxpool</code> 函数来先后实现卷积及最大池化的功能。</p>
<ul>
<li>使用 <code>conv_ksize</code>、<code>conv_num_outputs</code> 及 <code>x_tensor</code> 来创建权重（weight）及偏差（bias）变量。</li>
<li>对 <code>x_tensor</code> 进行卷积，使用 <code>conv_strides</code> 及<em>权重</em>。<ul>
<li>我们建议使用 SAME padding，不过你也可尝试其他 padding 模式。 </li>
</ul>
</li>
</ul>
<ul>
<li>加上<em>偏差</em>。</li>
<li>对卷积结果加上一个非线性函数作为激活层。</li>
<li>基于 <code>pool_ksize</code> 及 <code>pool_strides</code> 进行最大池化。<ul>
<li>我们建议使用 SAME padding，不过你也可尝试其他 padding 模式。</li>
</ul>
</li>
</ul>
<p><strong>注意：</strong>
你<strong>不</strong>可以使用来自 <a href="https://www.tensorflow.org/api_docs/python/tf/layers">TensorFlow Layers</a> 或 <a href="https://www.tensorflow.org/api_guides/python/contrib.layers">TensorFlow Layers (contrib)</a> 包中的函数来实现<strong>这一层</strong>的功能。但是你可以使用 TensorFlow 的<a href="https://www.tensorflow.org/api_docs/python/tf/nn">Neural Network</a>包。</p>
<p>对于如上的快捷方法，你在<strong>其他层</strong>中可以尝试使用。</p>
<p><strong>提示：</strong>
当你在 Python 中希望展开（unpacking）某个变量的值作为函数的参数，你可以参考 <a href="https://docs.python.org/3/tutorial/controlflow.html#unpacking-argument-lists">unpacking</a> 运算符。</p>

</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[3]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1"># 权重初始值的方差会影响准确率</span>
<span class="n">global_stddev</span> <span class="o">=</span> <span class="mf">0.01</span>
</pre></div>

</div>
</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[4]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="k">def</span> <span class="nf">conv2d_maxpool</span><span class="p">(</span><span class="n">x_tensor</span><span class="p">,</span> <span class="n">conv_num_outputs</span><span class="p">,</span> <span class="n">conv_ksize</span><span class="p">,</span> <span class="n">conv_strides</span><span class="p">,</span> <span class="n">pool_ksize</span><span class="p">,</span> <span class="n">pool_strides</span><span class="p">):</span>
    <span class="sd">&quot;&quot;&quot;</span>
<span class="sd">    Apply convolution then max pooling to x_tensor</span>
<span class="sd">    :param x_tensor: TensorFlow Tensor</span>
<span class="sd">    :param conv_num_outputs: Number of outputs for the convolutional layer</span>
<span class="sd">    :param conv_ksize: kernal size 2-D Tuple for the convolutional layer</span>
<span class="sd">    :param conv_strides: Stride 2-D Tuple for convolution</span>
<span class="sd">    :param pool_ksize: kernal size 2-D Tuple for pool</span>
<span class="sd">    :param pool_strides: Stride 2-D Tuple for pool</span>
<span class="sd">    : return: A tensor that represents convolution and max pooling of x_tensor</span>
<span class="sd">    &quot;&quot;&quot;</span>
    <span class="c1"># 初始化卷积层的weight和bias矩阵</span>
    <span class="c1"># x_tensor shape = [batch, height, width, depth]</span>
    <span class="c1"># weight = height * width * depth * output ~ init at normal distribution N(0, 0.01)</span>
    <span class="c1"># bias = output ~ init at 0</span>
    <span class="n">depth</span> <span class="o">=</span> <span class="n">x_tensor</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="mi">3</span><span class="p">]</span><span class="o">.</span><span class="n">value</span>
    <span class="n">weight_shape</span> <span class="o">=</span> <span class="p">[</span><span class="n">conv_ksize</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">conv_ksize</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="n">depth</span><span class="p">,</span> <span class="n">conv_num_outputs</span><span class="p">]</span>
    <span class="n">weight_init_val</span> <span class="o">=</span> <span class="n">tf</span><span class="o">.</span><span class="n">truncated_normal</span><span class="p">(</span><span class="n">weight_shape</span><span class="p">,</span> <span class="n">mean</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">stddev</span><span class="o">=</span><span class="n">global_stddev</span><span class="p">)</span>
    <span class="c1"># Define variables</span>
    <span class="n">weight</span> <span class="o">=</span> <span class="n">tf</span><span class="o">.</span><span class="n">Variable</span><span class="p">(</span><span class="n">weight_init_val</span><span class="p">)</span>
    <span class="n">bias</span> <span class="o">=</span> <span class="n">tf</span><span class="o">.</span><span class="n">Variable</span><span class="p">(</span><span class="n">tf</span><span class="o">.</span><span class="n">zeros</span><span class="p">(</span><span class="n">conv_num_outputs</span><span class="p">))</span>
    
    <span class="c1"># 执行二维卷积（根据给定输入以及滤波器尺寸、扫描方式）</span>
    <span class="c1"># stride = [batch, height, width, depth]</span>
    <span class="c1"># Apply stride only to height and width: [1, x, x, 1]</span>
    <span class="n">stride</span> <span class="o">=</span> <span class="p">[</span><span class="mi">1</span><span class="p">,</span> <span class="n">conv_strides</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">conv_strides</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="mi">1</span><span class="p">]</span>
    <span class="n">y</span> <span class="o">=</span> <span class="n">tf</span><span class="o">.</span><span class="n">nn</span><span class="o">.</span><span class="n">conv2d</span><span class="p">(</span><span class="nb">input</span><span class="o">=</span><span class="n">x_tensor</span><span class="p">,</span> <span class="nb">filter</span><span class="o">=</span><span class="n">weight</span><span class="p">,</span> <span class="n">strides</span><span class="o">=</span><span class="n">stride</span><span class="p">,</span> <span class="n">padding</span><span class="o">=</span><span class="s1">&#39;SAME&#39;</span><span class="p">)</span>
    <span class="n">y</span> <span class="o">=</span> <span class="n">tf</span><span class="o">.</span><span class="n">nn</span><span class="o">.</span><span class="n">bias_add</span><span class="p">(</span><span class="n">y</span><span class="p">,</span> <span class="n">bias</span><span class="p">)</span>
    
    <span class="c1"># 送入非线性激活函数产生概率值</span>
    <span class="n">y</span> <span class="o">=</span> <span class="n">tf</span><span class="o">.</span><span class="n">nn</span><span class="o">.</span><span class="n">relu</span><span class="p">(</span><span class="n">y</span><span class="p">)</span>
    
    <span class="c1"># 用最大池化处理数据（根据给定的池化滤波器尺寸和扫描方式）</span>
    <span class="n">filter_shape</span> <span class="o">=</span> <span class="p">[</span><span class="mi">1</span><span class="p">,</span> <span class="n">pool_ksize</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">pool_ksize</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="mi">1</span><span class="p">]</span>
    <span class="n">stride</span> <span class="o">=</span> <span class="p">[</span><span class="mi">1</span><span class="p">,</span> <span class="n">pool_strides</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">pool_strides</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="mi">1</span><span class="p">]</span>
    <span class="n">y</span> <span class="o">=</span> <span class="n">tf</span><span class="o">.</span><span class="n">nn</span><span class="o">.</span><span class="n">max_pool</span><span class="p">(</span><span class="n">y</span><span class="p">,</span> <span class="n">ksize</span><span class="o">=</span><span class="n">filter_shape</span><span class="p">,</span> <span class="n">strides</span><span class="o">=</span><span class="n">stride</span><span class="p">,</span> <span class="n">padding</span><span class="o">=</span><span class="s1">&#39;SAME&#39;</span><span class="p">)</span>
    
    <span class="c1"># 返回最后的输出结果</span>
    <span class="k">return</span> <span class="n">y</span>


<span class="sd">&quot;&quot;&quot;</span>
<span class="sd">DON&#39;T MODIFY ANYTHING IN THIS CELL THAT IS BELOW THIS LINE</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="n">tests</span><span class="o">.</span><span class="n">test_con_pool</span><span class="p">(</span><span class="n">conv2d_maxpool</span><span class="p">)</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt"></div>


<div class="output_subarea output_stream output_stdout output_text">
<pre>Tests Passed
</pre>
</div>
</div>

</div>
</div>

</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h3 id="&#23637;&#24320;&#23618;">&#23637;&#24320;&#23618;<a class="anchor-link" href="#&#23637;&#24320;&#23618;">&#182;</a></h3><p>修改 <code>flatten</code> 函数，来将4维的输入张量 <code>x_tensor</code> 转换为一个二维的张量。输出的形状应当是 <code>(Batch Size, Flattened Image Size)</code>。
快捷方法：你可以使用来自 <a href="https://www.tensorflow.org/api_docs/python/tf/layers">TensorFlow Layers</a> 或 <a href="https://www.tensorflow.org/api_guides/python/contrib.layers">TensorFlow Layers (contrib)</a> 包中的函数来实现该功能。不过你也可以只使用 TensorFlow 包中的函数来挑战自己。</p>

</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[5]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span>
<span class="k">def</span> <span class="nf">flatten</span><span class="p">(</span><span class="n">x_tensor</span><span class="p">):</span>
    <span class="sd">&quot;&quot;&quot;</span>
<span class="sd">    Flatten x_tensor to (Batch Size, Flattened Image Size)</span>
<span class="sd">    : x_tensor: A tensor of size (Batch Size, ...), where ... are the image dimensions.</span>
<span class="sd">    : return: A tensor of size (Batch Size, Flattened Image Size).</span>
<span class="sd">    &quot;&quot;&quot;</span>
    <span class="c1"># TODO: Implement Function</span>
    <span class="c1"># 获得输入矩阵在所有维度上的长度值的list</span>
    <span class="c1"># 例如x如果有128张图，长乘宽是32x32，有RGB三个颜色通道，那么x_shape = [128, 32, 32, 3]</span>
    <span class="n">x_shape</span> <span class="o">=</span> <span class="n">x_tensor</span><span class="o">.</span><span class="n">shape</span><span class="o">.</span><span class="n">as_list</span><span class="p">()</span>

    <span class="c1"># 把后三个维度压缩为一个维度，用一个向量表示一张图的所有像素信息</span>
    <span class="n">img_len</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">prod</span><span class="p">(</span><span class="n">x_shape</span><span class="p">[</span><span class="mi">1</span><span class="p">:])</span>
    
    <span class="c1"># OPT1：用-1自由推断维度长度</span>
    <span class="k">return</span> <span class="n">tf</span><span class="o">.</span><span class="n">reshape</span><span class="p">(</span><span class="n">x_tensor</span><span class="p">,</span> <span class="n">shape</span><span class="o">=</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">,</span> <span class="n">img_len</span><span class="p">])</span>

    <span class="c1"># OPT2：用原有shape对象，不可以直接用x_shape[0]，因为类型不同</span>
    <span class="k">return</span> <span class="n">tf</span><span class="o">.</span><span class="n">reshape</span><span class="p">(</span><span class="n">x_tensor</span><span class="p">,</span> <span class="n">shape</span><span class="o">=</span><span class="p">[</span><span class="n">tf</span><span class="o">.</span><span class="n">shape</span><span class="p">(</span><span class="n">x_tensor</span><span class="p">)[</span><span class="mi">0</span><span class="p">],</span> <span class="n">img_len</span><span class="p">])</span>

    <span class="c1"># OPT3：直接调用API将x_tensor变形为[batch, k]</span>
    <span class="k">return</span> <span class="n">tf</span><span class="o">.</span><span class="n">contrib</span><span class="o">.</span><span class="n">layers</span><span class="o">.</span><span class="n">flatten</span><span class="p">(</span><span class="n">x_tensor</span><span class="p">)</span>


<span class="sd">&quot;&quot;&quot;</span>
<span class="sd">DON&#39;T MODIFY ANYTHING IN THIS CELL THAT IS BELOW THIS LINE</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="n">tests</span><span class="o">.</span><span class="n">test_flatten</span><span class="p">(</span><span class="n">flatten</span><span class="p">)</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt"></div>


<div class="output_subarea output_stream output_stdout output_text">
<pre>Tests Passed
</pre>
</div>
</div>

</div>
</div>

</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h3 id="&#20840;&#36830;&#25509;&#23618;">&#20840;&#36830;&#25509;&#23618;<a class="anchor-link" href="#&#20840;&#36830;&#25509;&#23618;">&#182;</a></h3><p>修改 <code>fully_conn</code> 函数，来对形如 <code>(batch Size, num_outputs)</code> 的输入 <code>x_tensor</code> 应用一个全连接层。快捷方法：你可以使用来自 <a href="https://www.tensorflow.org/api_docs/python/tf/layers">TensorFlow Layers</a> 或 <a href="https://www.tensorflow.org/api_guides/python/contrib.layers">TensorFlow Layers (contrib)</a> 包中的函数来实现该功能。不过你也可以只使用 TensorFlow 包中的函数来挑战自己。</p>

</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[6]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="k">def</span> <span class="nf">fully_conn</span><span class="p">(</span><span class="n">x_tensor</span><span class="p">,</span> <span class="n">num_outputs</span><span class="p">):</span>
    <span class="sd">&quot;&quot;&quot;</span>
<span class="sd">    Apply a fully connected layer to x_tensor using weight and bias</span>
<span class="sd">    : x_tensor: A 2-D tensor where the first dimension is batch size.</span>
<span class="sd">    : num_outputs: The number of output that the new tensor should be.</span>
<span class="sd">    : return: A 2-D tensor where the second dimension is num_outputs.</span>
<span class="sd">    &quot;&quot;&quot;</span>
    <span class="c1"># OPT1：实现全链接的隐藏层。其实就是标准的矩阵乘法形式。</span>
    <span class="c1"># 因为已知 input = batch * K，output = batch * num_outputs, 因此可以推测出 weight = K * num_outputs</span>
    <span class="n">weight</span> <span class="o">=</span> <span class="n">tf</span><span class="o">.</span><span class="n">Variable</span><span class="p">(</span><span class="n">tf</span><span class="o">.</span><span class="n">truncated_normal</span><span class="p">([</span><span class="n">x_tensor</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">value</span><span class="p">,</span> <span class="n">num_outputs</span><span class="p">],</span> <span class="n">mean</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">stddev</span><span class="o">=</span><span class="n">global_stddev</span><span class="p">))</span>
    <span class="n">bias</span> <span class="o">=</span> <span class="n">tf</span><span class="o">.</span><span class="n">Variable</span><span class="p">(</span><span class="n">tf</span><span class="o">.</span><span class="n">zeros</span><span class="p">(</span><span class="n">num_outputs</span><span class="p">))</span>
    <span class="n">y</span> <span class="o">=</span> <span class="n">tf</span><span class="o">.</span><span class="n">matmul</span><span class="p">(</span><span class="n">x_tensor</span><span class="p">,</span> <span class="n">weight</span><span class="p">)</span>        <span class="c1"># b,k * k,n = b,n</span>
    <span class="n">y</span> <span class="o">=</span> <span class="n">tf</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">y</span><span class="p">,</span> <span class="n">bias</span><span class="p">)</span>
    <span class="n">y</span> <span class="o">=</span> <span class="n">tf</span><span class="o">.</span><span class="n">nn</span><span class="o">.</span><span class="n">relu</span><span class="p">(</span><span class="n">y</span><span class="p">)</span>
    <span class="k">return</span> <span class="n">y</span>
    
    <span class="c1"># OPT2：直接调用API将x_tensor经过全链接层输出为num_outputs个输出，默认使用ReLU作为激励函数</span>
    <span class="k">return</span> <span class="n">tf</span><span class="o">.</span><span class="n">contrib</span><span class="o">.</span><span class="n">layers</span><span class="o">.</span><span class="n">fully_connected</span><span class="p">(</span><span class="n">x_tensor</span><span class="p">,</span> <span class="n">num_outputs</span><span class="p">,</span> <span class="n">activation_fn</span><span class="o">=</span><span class="n">tf</span><span class="o">.</span><span class="n">nn</span><span class="o">.</span><span class="n">relu</span><span class="p">)</span>


<span class="sd">&quot;&quot;&quot;</span>
<span class="sd">DON&#39;T MODIFY ANYTHING IN THIS CELL THAT IS BELOW THIS LINE</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="n">tests</span><span class="o">.</span><span class="n">test_fully_conn</span><span class="p">(</span><span class="n">fully_conn</span><span class="p">)</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt"></div>


<div class="output_subarea output_stream output_stdout output_text">
<pre>Tests Passed
</pre>
</div>
</div>

</div>
</div>

</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h3 id="&#36755;&#20986;&#23618;">&#36755;&#20986;&#23618;<a class="anchor-link" href="#&#36755;&#20986;&#23618;">&#182;</a></h3><p>修改 <code>output</code> 函数，来对形如 <code>(batch Size, num_outputs)</code> 的输入 <code>x_tensor</code> 应用一个全连接层。快捷方法：你可以使用来自 <a href="https://www.tensorflow.org/api_docs/python/tf/layers">TensorFlow Layers</a> 或 <a href="https://www.tensorflow.org/api_guides/python/contrib.layers">TensorFlow Layers (contrib)</a> 包中的函数来实现该功能。不过你也可以只使用 TensorFlow 包中的函数来挑战自己。</p>
<p><strong>注意：</strong>
激活函数、softmax 或者交叉熵（corss entropy）<strong>不</strong>应被加入到该层。</p>

</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[7]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="k">def</span> <span class="nf">output</span><span class="p">(</span><span class="n">x_tensor</span><span class="p">,</span> <span class="n">num_outputs</span><span class="p">):</span>
    <span class="sd">&quot;&quot;&quot;</span>
<span class="sd">    Apply a output layer to x_tensor using weight and bias</span>
<span class="sd">    : x_tensor: A 2-D tensor where the first dimension is batch size.</span>
<span class="sd">    : num_outputs: The number of output that the new tensor should be.</span>
<span class="sd">    : return: A 2-D tensor where the second dimension is num_outputs.</span>
<span class="sd">    &quot;&quot;&quot;</span>
    <span class="c1"># OPT1：实现全链接的隐藏层。其实就是标准的矩阵乘法形式。</span>
    <span class="n">weight</span> <span class="o">=</span> <span class="n">tf</span><span class="o">.</span><span class="n">Variable</span><span class="p">(</span><span class="n">tf</span><span class="o">.</span><span class="n">truncated_normal</span><span class="p">([</span><span class="n">x_tensor</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">value</span><span class="p">,</span> <span class="n">num_outputs</span><span class="p">],</span> <span class="n">mean</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">stddev</span><span class="o">=</span><span class="n">global_stddev</span><span class="p">))</span>
    <span class="n">bias</span> <span class="o">=</span> <span class="n">tf</span><span class="o">.</span><span class="n">Variable</span><span class="p">(</span><span class="n">tf</span><span class="o">.</span><span class="n">zeros</span><span class="p">(</span><span class="n">num_outputs</span><span class="p">))</span>
    <span class="n">y</span> <span class="o">=</span> <span class="n">tf</span><span class="o">.</span><span class="n">matmul</span><span class="p">(</span><span class="n">x_tensor</span><span class="p">,</span> <span class="n">weight</span><span class="p">)</span>
    <span class="n">y</span> <span class="o">=</span> <span class="n">tf</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">y</span><span class="p">,</span> <span class="n">bias</span><span class="p">)</span>
    <span class="k">return</span> <span class="n">y</span>
    
    <span class="c1"># OPT2：直接调用API将x_tensor通过全链接层输出，不经过任何激励函数。</span>
    <span class="k">return</span> <span class="n">tf</span><span class="o">.</span><span class="n">contrib</span><span class="o">.</span><span class="n">layers</span><span class="o">.</span><span class="n">fully_connected</span><span class="p">(</span><span class="n">x_tensor</span><span class="p">,</span> <span class="n">num_outputs</span><span class="p">,</span> <span class="n">activation_fn</span><span class="o">=</span><span class="kc">None</span><span class="p">)</span>


<span class="sd">&quot;&quot;&quot;</span>
<span class="sd">DON&#39;T MODIFY ANYTHING IN THIS CELL THAT IS BELOW THIS LINE</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="n">tests</span><span class="o">.</span><span class="n">test_output</span><span class="p">(</span><span class="n">output</span><span class="p">)</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt"></div>


<div class="output_subarea output_stream output_stdout output_text">
<pre>Tests Passed
</pre>
</div>
</div>

</div>
</div>

</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h3 id="&#21019;&#24314;&#21367;&#31215;&#27169;&#22411;">&#21019;&#24314;&#21367;&#31215;&#27169;&#22411;<a class="anchor-link" href="#&#21019;&#24314;&#21367;&#31215;&#27169;&#22411;">&#182;</a></h3><p>修改 <code>conv_net</code> 函数，使之能够生成一个卷积神经网络模型。该函数的输入为一批图像数据 <code>x</code>，输出为 logits。在函数中，使用上方你修改的创建各种层的函数来创建该模型：</p>
<ul>
<li>使用 1 到 3 个卷积-最大池化层</li>
<li>使用一个展开层</li>
<li>使用 1 到 3 个全连接层</li>
<li>使用一个输出层</li>
<li>返回输出结果</li>
<li>在一个或多个层上使用 <a href="https://www.tensorflow.org/api_docs/python/tf/nn/dropout">TensorFlow's Dropout</a>，对应的保留概率为 <code>keep_prob</code>. </li>
</ul>

</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[138]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="k">def</span> <span class="nf">conv_net</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">keep_prob</span><span class="p">):</span>
    <span class="sd">&quot;&quot;&quot;</span>
<span class="sd">    Create a convolutional neural network model</span>
<span class="sd">    : x: Placeholder tensor that holds image data.</span>
<span class="sd">    : keep_prob: Placeholder tensor that hold dropout keep probability.</span>
<span class="sd">    : return: Tensor that represents logits</span>
<span class="sd">    &quot;&quot;&quot;</span>
    <span class="c1"># 卷积池化层</span>
    <span class="c1"># 可调参数列表</span>
    <span class="c1"># 0. 层数：不断调用并串联conv2d_maxpool，且每一层可以调整下面五个参数：</span>
    <span class="c1"># 1. 输出特征个数：conv_num_outputs</span>
    <span class="c1"># 2. 卷积滤波器二维尺寸：conv_ksize</span>
    <span class="c1"># 3. 卷积滤波器二维步长：conv_strides</span>
    <span class="c1"># 4. 池化滤波器二维尺寸：pool_ksize</span>
    <span class="c1"># 5. 池化滤波器二维步长：pool_strides</span>
    <span class="c1"># 函数签名：conv2d_maxpool(x, conv_num_outputs, conv_ksize, conv_strides, pool_ksize, pool_strides)</span>
    <span class="n">x_after_pool</span> <span class="o">=</span> <span class="n">x</span>
    <span class="n">x_after_pool</span> <span class="o">=</span> <span class="n">conv2d_maxpool</span><span class="p">(</span><span class="n">x_after_pool</span><span class="p">,</span> <span class="mi">16</span><span class="p">,</span> <span class="p">[</span><span class="mi">3</span><span class="p">,</span> <span class="mi">3</span><span class="p">],</span> <span class="p">[</span><span class="mi">1</span><span class="p">,</span> <span class="mi">1</span><span class="p">],</span> <span class="p">[</span><span class="mi">2</span><span class="p">,</span> <span class="mi">2</span><span class="p">],</span> <span class="p">[</span><span class="mi">1</span><span class="p">,</span> <span class="mi">1</span><span class="p">])</span>
    <span class="n">x_after_pool</span> <span class="o">=</span> <span class="n">conv2d_maxpool</span><span class="p">(</span><span class="n">x_after_pool</span><span class="p">,</span> <span class="mi">16</span><span class="p">,</span> <span class="p">[</span><span class="mi">3</span><span class="p">,</span> <span class="mi">3</span><span class="p">],</span> <span class="p">[</span><span class="mi">1</span><span class="p">,</span> <span class="mi">1</span><span class="p">],</span> <span class="p">[</span><span class="mi">2</span><span class="p">,</span> <span class="mi">2</span><span class="p">],</span> <span class="p">[</span><span class="mi">1</span><span class="p">,</span> <span class="mi">1</span><span class="p">])</span>
    <span class="n">x_after_pool</span> <span class="o">=</span> <span class="n">conv2d_maxpool</span><span class="p">(</span><span class="n">x_after_pool</span><span class="p">,</span> <span class="mi">16</span><span class="p">,</span> <span class="p">[</span><span class="mi">3</span><span class="p">,</span> <span class="mi">3</span><span class="p">],</span> <span class="p">[</span><span class="mi">1</span><span class="p">,</span> <span class="mi">1</span><span class="p">],</span> <span class="p">[</span><span class="mi">2</span><span class="p">,</span> <span class="mi">2</span><span class="p">],</span> <span class="p">[</span><span class="mi">1</span><span class="p">,</span> <span class="mi">1</span><span class="p">])</span>
    
    <span class="c1"># 展开层</span>
    <span class="n">x_after_flatten</span> <span class="o">=</span> <span class="n">flatten</span><span class="p">(</span><span class="n">x_after_pool</span><span class="p">)</span>

    <span class="c1"># 全链接层</span>
    <span class="c1"># 可调参数列表</span>
    <span class="c1"># 层数：串联fully_conn</span>
    <span class="c1"># 输出特征个数：num_outputs</span>
    <span class="c1"># 函数签名：fully_conn(x_tensor, num_outputs)</span>
    <span class="n">x_after_full_conn</span> <span class="o">=</span> <span class="n">fully_conn</span><span class="p">(</span><span class="n">x_after_flatten</span><span class="p">,</span> <span class="mi">1024</span><span class="p">)</span>

    
    <span class="c1"># Dropout：在全链接层和输出层之间进行</span>
    <span class="n">x_after_dropout</span> <span class="o">=</span> <span class="n">tf</span><span class="o">.</span><span class="n">nn</span><span class="o">.</span><span class="n">dropout</span><span class="p">(</span><span class="n">x_after_full_conn</span><span class="p">,</span> <span class="n">keep_prob</span><span class="p">)</span>
    
    <span class="c1"># 输出层</span>
    <span class="c1"># 输出特征个数为10，对应于实际要分类的10个one-hot特征</span>
    <span class="n">y</span> <span class="o">=</span> <span class="n">output</span><span class="p">(</span><span class="n">x_after_dropout</span><span class="p">,</span> <span class="mi">10</span><span class="p">)</span>
    
    <span class="k">return</span> <span class="n">y</span>


<span class="sd">&quot;&quot;&quot;</span>
<span class="sd">DON&#39;T MODIFY ANYTHING IN THIS CELL THAT IS BELOW THIS LINE</span>
<span class="sd">&quot;&quot;&quot;</span>

<span class="c1">##############################</span>
<span class="c1">## Build the Neural Network ##</span>
<span class="c1">##############################</span>

<span class="c1"># Remove previous weights, bias, inputs, etc..</span>
<span class="n">tf</span><span class="o">.</span><span class="n">reset_default_graph</span><span class="p">()</span>

<span class="c1"># Inputs</span>
<span class="n">x</span> <span class="o">=</span> <span class="n">neural_net_image_input</span><span class="p">((</span><span class="mi">32</span><span class="p">,</span> <span class="mi">32</span><span class="p">,</span> <span class="mi">3</span><span class="p">))</span>
<span class="n">y</span> <span class="o">=</span> <span class="n">neural_net_label_input</span><span class="p">(</span><span class="mi">10</span><span class="p">)</span>
<span class="n">keep_prob</span> <span class="o">=</span> <span class="n">neural_net_keep_prob_input</span><span class="p">()</span>

<span class="c1"># Model</span>
<span class="n">logits</span> <span class="o">=</span> <span class="n">conv_net</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">keep_prob</span><span class="p">)</span>

<span class="c1"># 给输出结果起个名字方便后续调用</span>
<span class="c1"># Name logits Tensor, so that is can be loaded from disk after training</span>
<span class="n">logits</span> <span class="o">=</span> <span class="n">tf</span><span class="o">.</span><span class="n">identity</span><span class="p">(</span><span class="n">logits</span><span class="p">,</span> <span class="n">name</span><span class="o">=</span><span class="s1">&#39;logits&#39;</span><span class="p">)</span>

<span class="c1"># 代价函数：使用交叉熵作为代价函数</span>
<span class="c1"># 对代价函数进行最优化：AdamOptimizer，一种SGD方法</span>
<span class="c1"># Loss and Optimizer</span>
<span class="n">cost</span> <span class="o">=</span> <span class="n">tf</span><span class="o">.</span><span class="n">reduce_mean</span><span class="p">(</span><span class="n">tf</span><span class="o">.</span><span class="n">nn</span><span class="o">.</span><span class="n">softmax_cross_entropy_with_logits</span><span class="p">(</span><span class="n">logits</span><span class="o">=</span><span class="n">logits</span><span class="p">,</span> <span class="n">labels</span><span class="o">=</span><span class="n">y</span><span class="p">))</span>
<span class="n">optimizer</span> <span class="o">=</span> <span class="n">tf</span><span class="o">.</span><span class="n">train</span><span class="o">.</span><span class="n">AdamOptimizer</span><span class="p">()</span><span class="o">.</span><span class="n">minimize</span><span class="p">(</span><span class="n">cost</span><span class="p">)</span>

<span class="c1"># 定义评估指标: 准确率</span>
<span class="c1"># 扫描每个图像，比较估计值和真实值label沿第二维的最大值索引</span>
<span class="n">correct_pred</span> <span class="o">=</span> <span class="n">tf</span><span class="o">.</span><span class="n">equal</span><span class="p">(</span><span class="n">tf</span><span class="o">.</span><span class="n">argmax</span><span class="p">(</span><span class="n">logits</span><span class="p">,</span> <span class="mi">1</span><span class="p">),</span> <span class="n">tf</span><span class="o">.</span><span class="n">argmax</span><span class="p">(</span><span class="n">y</span><span class="p">,</span> <span class="mi">1</span><span class="p">))</span>    
<span class="c1"># 求平均</span>
<span class="n">accuracy</span> <span class="o">=</span> <span class="n">tf</span><span class="o">.</span><span class="n">reduce_mean</span><span class="p">(</span><span class="n">tf</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span><span class="n">correct_pred</span><span class="p">,</span> <span class="n">tf</span><span class="o">.</span><span class="n">float32</span><span class="p">),</span> <span class="n">name</span><span class="o">=</span><span class="s1">&#39;accuracy&#39;</span><span class="p">)</span>

<span class="n">tests</span><span class="o">.</span><span class="n">test_conv_net</span><span class="p">(</span><span class="n">conv_net</span><span class="p">)</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt"></div>


<div class="output_subarea output_stream output_stdout output_text">
<pre>Neural Network Built!
</pre>
</div>
</div>

</div>
</div>

</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h2 id="&#35757;&#32451;&#35813;&#31070;&#32463;&#32593;&#32476;">&#35757;&#32451;&#35813;&#31070;&#32463;&#32593;&#32476;<a class="anchor-link" href="#&#35757;&#32451;&#35813;&#31070;&#32463;&#32593;&#32476;">&#182;</a></h2><h3 id="&#26368;&#20248;&#21270;">&#26368;&#20248;&#21270;<a class="anchor-link" href="#&#26368;&#20248;&#21270;">&#182;</a></h3><p>修改 <code>train_neural_network</code> 函数以执行单次最优化。该最优化过程应在一个 <code>session</code> 中使用 <code>optimizer</code> 来进行该过程，它的 <code>feed_dict</code> 包括：</p>
<ul>
<li><code>x</code> 代表输入图像</li>
<li><code>y</code> 代表<em>标签</em></li>
<li><code>keep_prob</code> 为 Dropout 过程中的保留概率</li>
</ul>
<p>对每批数据该函数都会被调用，因而 <code>tf.global_variables_initializer()</code> 已经被调用过。</p>
<p>注意：该函数并不要返回某个值，它只对神经网络进行最优化。</p>

</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[9]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="k">def</span> <span class="nf">train_neural_network</span><span class="p">(</span><span class="n">session</span><span class="p">,</span> <span class="n">optimizer</span><span class="p">,</span> <span class="n">keep_probability</span><span class="p">,</span> <span class="n">feature_batch</span><span class="p">,</span> <span class="n">label_batch</span><span class="p">):</span>
    <span class="sd">&quot;&quot;&quot;</span>
<span class="sd">    Optimize the session on a batch of images and labels</span>
<span class="sd">    : session: Current TensorFlow session</span>
<span class="sd">    : optimizer: TensorFlow optimizer function</span>
<span class="sd">    : keep_probability: keep probability</span>
<span class="sd">    : feature_batch: Batch of Numpy image data</span>
<span class="sd">    : label_batch: Batch of Numpy label data</span>
<span class="sd">    &quot;&quot;&quot;</span>
    <span class="c1"># TODO: Implement Function</span>
    <span class="n">session</span><span class="o">.</span><span class="n">run</span><span class="p">(</span><span class="n">optimizer</span><span class="p">,</span> <span class="n">feed_dict</span><span class="o">=</span><span class="p">{</span><span class="n">x</span><span class="p">:</span><span class="n">feature_batch</span><span class="p">,</span> <span class="n">y</span><span class="p">:</span><span class="n">label_batch</span><span class="p">,</span> <span class="n">keep_prob</span><span class="p">:</span><span class="n">keep_probability</span><span class="p">})</span>


<span class="sd">&quot;&quot;&quot;</span>
<span class="sd">DON&#39;T MODIFY ANYTHING IN THIS CELL THAT IS BELOW THIS LINE</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="n">tests</span><span class="o">.</span><span class="n">test_train_nn</span><span class="p">(</span><span class="n">train_neural_network</span><span class="p">)</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt"></div>


<div class="output_subarea output_stream output_stdout output_text">
<pre>Tests Passed
</pre>
</div>
</div>

</div>
</div>

</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h3 id="&#26174;&#31034;&#29366;&#24577;">&#26174;&#31034;&#29366;&#24577;<a class="anchor-link" href="#&#26174;&#31034;&#29366;&#24577;">&#182;</a></h3><p>修改 <code>print_stats</code> 函数来打印 loss 值及验证准确率。 使用全局的变量 <code>valid_features</code> 及 <code>valid_labels</code> 来计算验证准确率。 设定保留概率为 1.0 来计算 loss 值及验证准确率。</p>

</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[10]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="k">def</span> <span class="nf">print_stats</span><span class="p">(</span><span class="n">session</span><span class="p">,</span> <span class="n">feature_batch</span><span class="p">,</span> <span class="n">label_batch</span><span class="p">,</span> <span class="n">cost</span><span class="p">,</span> <span class="n">accuracy</span><span class="p">):</span>
    <span class="sd">&quot;&quot;&quot;</span>
<span class="sd">    Print information about loss and validation accuracy</span>
<span class="sd">    : session: Current TensorFlow session</span>
<span class="sd">    : feature_batch: Batch of Numpy image data</span>
<span class="sd">    : label_batch: Batch of Numpy label data</span>
<span class="sd">    : cost: TensorFlow cost function</span>
<span class="sd">    : accuracy: TensorFlow accuracy function</span>
<span class="sd">    &quot;&quot;&quot;</span>
    <span class="c1"># 此时已经对模型训练完一批数据</span>
    <span class="c1"># 查看模型对当前训练集的预测值与真实值之间的差距（交叉熵）</span>
    <span class="n">loss</span> <span class="o">=</span> <span class="n">session</span><span class="o">.</span><span class="n">run</span><span class="p">(</span><span class="n">cost</span><span class="p">,</span> <span class="n">feed_dict</span><span class="o">=</span><span class="p">{</span><span class="n">x</span><span class="p">:</span><span class="n">feature_batch</span><span class="p">,</span> <span class="n">y</span><span class="p">:</span><span class="n">label_batch</span><span class="p">,</span> <span class="n">keep_prob</span><span class="p">:</span><span class="mi">1</span><span class="p">})</span>
    
    <span class="c1"># 查看模型对当前训练集的预测准确度</span>
    <span class="n">acc</span> <span class="o">=</span> <span class="n">session</span><span class="o">.</span><span class="n">run</span><span class="p">(</span><span class="n">accuracy</span><span class="p">,</span> <span class="n">feed_dict</span><span class="o">=</span><span class="p">{</span><span class="n">x</span><span class="p">:</span><span class="n">valid_features</span><span class="p">,</span> <span class="n">y</span><span class="p">:</span><span class="n">valid_labels</span><span class="p">,</span> <span class="n">keep_prob</span><span class="p">:</span><span class="mi">1</span><span class="p">})</span>
    
    <span class="c1"># 实时显示</span>
    <span class="nb">print</span><span class="p">(</span><span class="s2">&quot;loss =&quot;</span><span class="p">,</span> <span class="n">loss</span><span class="p">,</span> <span class="s2">&quot;   accuracy =&quot;</span><span class="p">,</span> <span class="nb">round</span><span class="p">(</span><span class="n">acc</span><span class="o">*</span><span class="mi">100</span><span class="p">,</span> <span class="mi">2</span><span class="p">),</span> <span class="s2">&quot;%&quot;</span><span class="p">)</span>
</pre></div>

</div>
</div>
</div>

</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h3 id="&#36229;&#21442;&#25968;&#35843;&#33410;">&#36229;&#21442;&#25968;&#35843;&#33410;<a class="anchor-link" href="#&#36229;&#21442;&#25968;&#35843;&#33410;">&#182;</a></h3><p>你需要调节如下的参数：</p>
<ul>
<li>设定 <code>epoches</code> 为模型停止学习或开始过拟合时模型的迭代次数。</li>
<li>设定 <code>batch_size</code> 为你内存能支持的最大值。一般我们设定该值为：<ul>
<li>64</li>
<li>128</li>
<li>256</li>
<li>...</li>
</ul>
</li>
</ul>
<ul>
<li>设定 <code>keep_probability</code> 为在 dropout 过程中保留一个节点的概率。</li>
</ul>

</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[143]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1"># TODO: Tune Parameters</span>
<span class="c1"># 15代基本能稳定在55%</span>
<span class="n">epochs</span> <span class="o">=</span> <span class="mi">15</span>

<span class="c1"># batch_size越大，每个epoch调用train_neural_network的频率就越低（稍微快些），但是会导致早几代的准确率下降(收敛速度下降)</span>
<span class="c1"># 1080ti似乎可以支持到1024</span>
<span class="c1"># 注意batch_size过大导致OOM之后，需要重新运行checkpoint后的所有代码才可以，否则会持续OOM。</span>
<span class="n">batch_size</span> <span class="o">=</span> <span class="mi">512</span>

<span class="c1"># 减弱过拟合</span>
<span class="n">keep_probability</span> <span class="o">=</span> <span class="mf">0.5</span>

<span class="n">global_stddev</span> <span class="o">=</span> <span class="mf">0.1</span>
</pre></div>

</div>
</div>
</div>

</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h3 id="&#23545;&#21333;&#25209;-CIFAR-10-&#25968;&#25454;&#36827;&#34892;&#35757;&#32451;">&#23545;&#21333;&#25209; CIFAR-10 &#25968;&#25454;&#36827;&#34892;&#35757;&#32451;<a class="anchor-link" href="#&#23545;&#21333;&#25209;-CIFAR-10-&#25968;&#25454;&#36827;&#34892;&#35757;&#32451;">&#182;</a></h3><p>相比于在所有 CIFAR-10 数据上训练神经网络，我们首先使用一批数据进行训练。这会帮助你在调节模型提高精度的过程中节省时间。当最终的验证精度超过 50% 之后，你就可以前往下一节在所有数据上运行该模型了。</p>

</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[89]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd">DON&#39;T MODIFY ANYTHING IN THIS CELL</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="kn">from</span> <span class="nn">time</span> <span class="k">import</span> <span class="n">time</span>
<span class="nb">print</span><span class="p">(</span><span class="s1">&#39;Checking the Training on a Single Batch...&#39;</span><span class="p">)</span>

<span class="k">with</span> <span class="n">tf</span><span class="o">.</span><span class="n">Session</span><span class="p">()</span> <span class="k">as</span> <span class="n">sess</span><span class="p">:</span>
    <span class="c1"># Initializing the variables</span>
    <span class="n">sess</span><span class="o">.</span><span class="n">run</span><span class="p">(</span><span class="n">tf</span><span class="o">.</span><span class="n">global_variables_initializer</span><span class="p">())</span>
    
    <span class="c1"># 对五万张照片中的第一批（10000张）照片进行训练，每次选择9000张作为训练集。</span>
    <span class="n">start</span> <span class="o">=</span> <span class="n">time</span><span class="p">()</span>
    <span class="k">for</span> <span class="n">epoch</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">epochs</span><span class="p">):</span>
        <span class="n">batch_i</span> <span class="o">=</span> <span class="mi">1</span>
        <span class="k">for</span> <span class="n">batch_features</span><span class="p">,</span> <span class="n">batch_labels</span> <span class="ow">in</span> <span class="n">helper</span><span class="o">.</span><span class="n">load_preprocess_training_batch</span><span class="p">(</span><span class="n">batch_i</span><span class="p">,</span> <span class="n">batch_size</span><span class="p">):</span>
            <span class="n">train_neural_network</span><span class="p">(</span><span class="n">sess</span><span class="p">,</span> <span class="n">optimizer</span><span class="p">,</span> <span class="n">keep_probability</span><span class="p">,</span> <span class="n">batch_features</span><span class="p">,</span> <span class="n">batch_labels</span><span class="p">)</span>
        <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;Epoch </span><span class="si">{:&gt;2}</span><span class="s1">, CIFAR-10 Batch </span><span class="si">{}</span><span class="s1">:  &#39;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">epoch</span> <span class="o">+</span> <span class="mi">1</span><span class="p">,</span> <span class="n">batch_i</span><span class="p">),</span> <span class="n">end</span><span class="o">=</span><span class="s1">&#39;&#39;</span><span class="p">)</span>
        <span class="n">print_stats</span><span class="p">(</span><span class="n">sess</span><span class="p">,</span> <span class="n">batch_features</span><span class="p">,</span> <span class="n">batch_labels</span><span class="p">,</span> <span class="n">cost</span><span class="p">,</span> <span class="n">accuracy</span><span class="p">)</span>
    <span class="n">end</span> <span class="o">=</span> <span class="nb">round</span><span class="p">(</span><span class="n">time</span><span class="p">()</span> <span class="o">-</span> <span class="n">start</span><span class="p">,</span> <span class="mi">2</span><span class="p">)</span>
    <span class="nb">print</span><span class="p">(</span><span class="s2">&quot;Time Spent:&quot;</span><span class="p">,</span> <span class="n">end</span><span class="p">)</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt"></div>


<div class="output_subarea output_stream output_stdout output_text">
<pre>Checking the Training on a Single Batch...
Epoch  1, CIFAR-10 Batch 1:  loss = 2.01225    accuracy = 36.4 %
Epoch  2, CIFAR-10 Batch 1:  loss = 1.8636    accuracy = 42.14 %
Epoch  3, CIFAR-10 Batch 1:  loss = 1.73107    accuracy = 45.02 %
Epoch  4, CIFAR-10 Batch 1:  loss = 1.71657    accuracy = 45.78 %
Epoch  5, CIFAR-10 Batch 1:  loss = 1.63374    accuracy = 48.2 %
Epoch  6, CIFAR-10 Batch 1:  loss = 1.46242    accuracy = 49.16 %
Epoch  7, CIFAR-10 Batch 1:  loss = 1.40084    accuracy = 48.76 %
Epoch  8, CIFAR-10 Batch 1:  loss = 1.35205    accuracy = 50.6 %
Epoch  9, CIFAR-10 Batch 1:  loss = 1.31065    accuracy = 48.5 %
Epoch 10, CIFAR-10 Batch 1:  loss = 1.14954    accuracy = 51.08 %
Epoch 11, CIFAR-10 Batch 1:  loss = 1.13003    accuracy = 49.52 %
Epoch 12, CIFAR-10 Batch 1:  loss = 1.07696    accuracy = 50.78 %
Epoch 13, CIFAR-10 Batch 1:  loss = 1.04031    accuracy = 51.9 %
Epoch 14, CIFAR-10 Batch 1:  loss = 0.996598    accuracy = 52.14 %
Epoch 15, CIFAR-10 Batch 1:  loss = 0.956844    accuracy = 51.9 %
Time Spent: 13.73
</pre>
</div>
</div>

</div>
</div>

</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h2 id="&#21442;&#25968;&#19982;&#27169;&#22411;&#24615;&#33021;&#30340;&#20851;&#31995;&#25506;&#32034;">&#21442;&#25968;&#19982;&#27169;&#22411;&#24615;&#33021;&#30340;&#20851;&#31995;&#25506;&#32034;<a class="anchor-link" href="#&#21442;&#25968;&#19982;&#27169;&#22411;&#24615;&#33021;&#30340;&#20851;&#31995;&#25506;&#32034;">&#182;</a></h2>
</div>
</div>
</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h3 id="epoch">epoch<a class="anchor-link" href="#epoch">&#182;</a></h3><ul>
<li>代数越多，模型的准确度会趋近于越好，并收敛于一个值左右，上下震动。</li>
</ul>
<ul>
<li>当准确度不再随epoch增长而增长时，模型就算收敛了。再往下训练有可能发展为过拟合。</li>
</ul>
<table>
<thead><tr>
<th>epoch</th>
<th>batch_size</th>
<th>prob</th>
<th>stddev</th>
<th>accuracy</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>#1</strong></td>
<td>512</td>
<td>0.5</td>
<td>0.01</td>
<td><strong>26%</strong></td>
</tr>
<tr>
<td><strong>#2</strong></td>
<td>512</td>
<td>0.5</td>
<td>0.01</td>
<td><strong>33%</strong></td>
</tr>
<tr>
<td><strong>#3</strong></td>
<td>512</td>
<td>0.5</td>
<td>0.01</td>
<td><strong>39%</strong></td>
</tr>
<tr>
<td><strong>#4</strong></td>
<td>512</td>
<td>0.5</td>
<td>0.01</td>
<td><strong>42%</strong></td>
</tr>
<tr>
<td><strong>#5</strong></td>
<td>512</td>
<td>0.5</td>
<td>0.01</td>
<td><strong>45%</strong></td>
</tr>
<tr>
<td><strong>#10</strong></td>
<td>512</td>
<td>0.5</td>
<td>0.01</td>
<td><strong>52%</strong></td>
</tr>
<tr>
<td><strong>#15</strong></td>
<td>512</td>
<td>0.5</td>
<td>0.01</td>
<td><strong>54%</strong></td>
</tr>
<tr>
<td><strong>#20</strong></td>
<td>512</td>
<td>0.5</td>
<td>0.01</td>
<td><strong>54%</strong></td>
</tr>
<tr>
<td><strong>#25</strong></td>
<td>512</td>
<td>0.5</td>
<td>0.01</td>
<td><strong>56%</strong></td>
</tr>
<tr>
<td><strong>#30</strong></td>
<td>512</td>
<td>0.5</td>
<td>0.01</td>
<td><strong>57%</strong></td>
</tr>
<tr>
<td><strong>#35</strong></td>
<td>512</td>
<td>0.5</td>
<td>0.01</td>
<td><strong>56%</strong></td>
</tr>
<tr>
<td><strong>#40</strong></td>
<td>512</td>
<td>0.5</td>
<td>0.01</td>
<td><strong>57%</strong></td>
</tr>
</tbody>
</table>
<p>以上结果基于模型参数:</p>
<ul>
<li>卷积层：输出个数 128, 滤波器尺寸 [3, 3], 滤波器步长 [1, 1], 池化尺寸 [2, 2], 池化步长 [1, 1]</li>
<li>全链接层：输出个数 512</li>
</ul>

</div>
</div>
</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h3 id="batch_size"><code>batch_size</code><a class="anchor-link" href="#batch_size">&#182;</a></h3><ul>
<li>结论：<code>batch_size</code> 会影响训练时间，但不会影响准确率</li>
</ul>
<table>
<thead><tr>
<th>time (sec)</th>
<th>epoch</th>
<th>batch_size</th>
<th>prob</th>
<th>stddev</th>
<th>accuracy</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>80</strong></td>
<td>35</td>
<td><strong>1024</strong></td>
<td>0.5</td>
<td>0.01</td>
<td>55% (start at 20%)</td>
</tr>
<tr>
<td><strong>83</strong></td>
<td>35</td>
<td><strong>512</strong></td>
<td>0.5</td>
<td>0.01</td>
<td>55% (start at 25%)</td>
</tr>
<tr>
<td><strong>93</strong></td>
<td>35</td>
<td><strong>256</strong></td>
<td>0.5</td>
<td>0.01</td>
<td>55% (start at 26%)</td>
</tr>
<tr>
<td><strong>116</strong></td>
<td>35</td>
<td><strong>128</strong></td>
<td>0.5</td>
<td>0.01</td>
<td>55% (start at 32%)</td>
</tr>
<tr>
<td><strong>161</strong></td>
<td>35</td>
<td><strong>64</strong></td>
<td>0.5</td>
<td>0.01</td>
<td>55% (start at 39%)</td>
</tr>
</tbody>
</table>
<p>以上结果基于模型参数:</p>
<ul>
<li>卷积层：输出个数 128, 滤波器尺寸 [3, 3], 滤波器步长 [1, 1], 池化尺寸 [2, 2], 池化步长 [1, 1]</li>
<li>全链接层：输出个数 512</li>
</ul>

</div>
</div>
</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h3 id="stddev"><code>stddev</code><a class="anchor-link" href="#stddev">&#182;</a></h3><ul>
<li><code>stddev</code> 过小会导致收敛过慢。达到相同准确率需要更多轮训练时间。</li>
</ul>
<table>
<thead><tr>
<th>time (sec)</th>
<th>epoch</th>
<th>batch_size</th>
<th>prob</th>
<th>stddev</th>
<th>accuracy</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>34</strong></td>
<td><strong>15</strong></td>
<td>1024</td>
<td>0.5</td>
<td><strong>0.01</strong></td>
<td>55%</td>
</tr>
<tr>
<td><strong>80</strong></td>
<td><strong>35</strong></td>
<td>1024</td>
<td>0.5</td>
<td><strong>0.001</strong></td>
<td>55%</td>
</tr>
</tbody>
</table>
<ul>
<li><code>stddev</code> 过大会导致欠拟合</li>
</ul>
<table>
<thead><tr>
<th>time (sec)</th>
<th>epoch</th>
<th>batch_size</th>
<th>prob</th>
<th>stddev</th>
<th>accuracy</th>
</tr>
</thead>
<tbody>
<tr>
<td>80</td>
<td>35</td>
<td>1024</td>
<td>0.5</td>
<td><strong>0.01</strong></td>
<td><strong>55%</strong></td>
</tr>
<tr>
<td>80</td>
<td>35</td>
<td>1024</td>
<td>0.5</td>
<td><strong>0.1</strong></td>
<td><strong>55%</strong></td>
</tr>
<tr>
<td>80</td>
<td>35</td>
<td>1024</td>
<td>0.5</td>
<td><strong>1</strong></td>
<td><strong>11%</strong></td>
</tr>
</tbody>
</table>
<p>以上结果基于模型参数:</p>
<ul>
<li>卷积层：输出个数 128, 滤波器尺寸 [3, 3], 滤波器步长 [1, 1], 池化尺寸 [2, 2], 池化步长 [1, 1]</li>
<li>全链接层：输出个数 512</li>
</ul>

</div>
</div>
</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h3 id="keep_probability">keep_probability<a class="anchor-link" href="#keep_probability">&#182;</a></h3><ul>
<li>调小每个节点的保留概率可以缓解过拟合的情况</li>
</ul>
<ul>
<li>但如果保留概率过小，则会出现欠拟合。</li>
</ul>

</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[38]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="kn">import</span> <span class="nn">matplotlib.pyplot</span> <span class="k">as</span> <span class="nn">plt</span>
<span class="n">idx</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">arange</span><span class="p">(</span><span class="mi">35</span><span class="p">)</span>
<span class="n">res_005</span> <span class="o">=</span> <span class="p">[</span><span class="mf">18.32</span><span class="p">,</span><span class="mf">23.0</span><span class="p">,</span><span class="mf">30.46</span><span class="p">,</span><span class="mf">33.52</span><span class="p">,</span><span class="mf">36.76</span><span class="p">,</span><span class="mf">38.04</span><span class="p">,</span><span class="mf">38.4</span><span class="p">,</span><span class="mf">40.86</span><span class="p">,</span><span class="mf">41.66</span><span class="p">,</span><span class="mf">42.68</span><span class="p">,</span><span class="mf">42.38</span><span class="p">,</span><span class="mf">42.96</span><span class="p">,</span><span class="mf">45.14</span><span class="p">,</span><span class="mf">45.84</span><span class="p">,</span><span class="mf">46.04</span><span class="p">,</span><span class="mf">46.28</span><span class="p">,</span><span class="mf">46.26</span><span class="p">,</span><span class="mf">47.1</span><span class="p">,</span><span class="mf">46.68</span><span class="p">,</span><span class="mf">47.82</span><span class="p">,</span><span class="mf">47.36</span><span class="p">,</span><span class="mf">48.0</span><span class="p">,</span><span class="mf">48.78</span><span class="p">,</span><span class="mf">48.92</span><span class="p">,</span><span class="mf">49.64</span><span class="p">,</span><span class="mf">49.52</span><span class="p">,</span><span class="mf">49.36</span><span class="p">,</span><span class="mf">49.62</span><span class="p">,</span><span class="mf">49.18</span><span class="p">,</span><span class="mf">50.14</span><span class="p">,</span><span class="mf">49.68</span><span class="p">,</span><span class="mf">50.54</span><span class="p">,</span><span class="mf">49.18</span><span class="p">,</span><span class="mf">50.62</span><span class="p">,</span><span class="mf">50.44</span><span class="p">]</span>
<span class="n">res_01</span> <span class="o">=</span> <span class="p">[</span><span class="mf">26.12</span><span class="p">,</span> <span class="mf">31.72</span><span class="p">,</span> <span class="mf">38.5</span><span class="p">,</span> <span class="mf">40.84</span><span class="p">,</span> <span class="mf">43.36</span><span class="p">,</span> <span class="mf">44.96</span><span class="p">,</span> <span class="mf">46.36</span><span class="p">,</span> <span class="mf">48.0</span><span class="p">,</span> <span class="mf">49.64</span><span class="p">,</span> <span class="mf">50.48</span><span class="p">,</span> <span class="mf">50.82</span><span class="p">,</span> <span class="mf">51.36</span><span class="p">,</span> <span class="mf">52.54</span><span class="p">,</span> <span class="mf">53.12</span><span class="p">,</span> <span class="mf">53.3</span><span class="p">,</span> <span class="mf">53.18</span><span class="p">,</span> <span class="mf">53.28</span><span class="p">,</span> <span class="mf">53.08</span><span class="p">,</span> <span class="mf">53.78</span><span class="p">,</span> <span class="mf">55.54</span><span class="p">,</span> <span class="mf">55.64</span><span class="p">,</span> <span class="mf">55.66</span><span class="p">,</span> <span class="mf">55.6</span><span class="p">,</span> <span class="mf">55.78</span><span class="p">,</span> <span class="mf">56.06</span><span class="p">,</span> <span class="mf">57.46</span><span class="p">,</span> <span class="mf">56.9</span><span class="p">,</span> <span class="mf">57.6</span><span class="p">,</span> <span class="mf">57.76</span><span class="p">,</span> <span class="mf">58.12</span><span class="p">,</span> <span class="mf">58.14</span><span class="p">,</span> <span class="mf">57.86</span><span class="p">,</span> <span class="mf">57.86</span><span class="p">,</span> <span class="mf">58.28</span><span class="p">,</span> <span class="mf">58.16</span><span class="p">]</span>
<span class="n">res_05</span> <span class="o">=</span> <span class="p">[</span><span class="mf">26.48</span><span class="p">,</span><span class="mf">36.14</span><span class="p">,</span><span class="mf">39.66</span><span class="p">,</span><span class="mf">45.08</span><span class="p">,</span><span class="mf">47.34</span><span class="p">,</span><span class="mf">50.4</span><span class="p">,</span><span class="mf">51.56</span><span class="p">,</span><span class="mf">52.72</span><span class="p">,</span><span class="mf">52.72</span><span class="p">,</span><span class="mf">53.36</span><span class="p">,</span><span class="mf">53.12</span><span class="p">,</span><span class="mf">54.5</span><span class="p">,</span><span class="mf">55.52</span><span class="p">,</span><span class="mf">55.24</span><span class="p">,</span><span class="mf">54.9</span><span class="p">,</span><span class="mf">55.62</span><span class="p">,</span><span class="mf">55.1</span><span class="p">,</span><span class="mf">53.38</span><span class="p">,</span><span class="mf">54.58</span><span class="p">,</span><span class="mf">55.44</span><span class="p">,</span><span class="mf">54.68</span><span class="p">,</span><span class="mf">52.76</span><span class="p">,</span><span class="mf">55.62</span><span class="p">,</span><span class="mf">55.98</span><span class="p">,</span><span class="mf">56.82</span><span class="p">,</span><span class="mf">57.2</span><span class="p">,</span><span class="mf">57.3</span><span class="p">,</span><span class="mf">57.1</span><span class="p">,</span><span class="mf">56.9</span><span class="p">,</span><span class="mf">57.0</span><span class="p">,</span><span class="mf">56.62</span><span class="p">,</span><span class="mf">57.12</span><span class="p">,</span><span class="mf">55.66</span><span class="p">,</span><span class="mf">56.14</span><span class="p">,</span><span class="mf">56.18</span><span class="p">]</span>
<span class="n">res_09</span> <span class="o">=</span> <span class="p">[</span><span class="mf">25.56</span><span class="p">,</span><span class="mf">37.88</span><span class="p">,</span><span class="mf">41.14</span><span class="p">,</span><span class="mf">45.5</span><span class="p">,</span><span class="mf">48.78</span><span class="p">,</span><span class="mf">50.4</span><span class="p">,</span><span class="mf">49.4</span><span class="p">,</span><span class="mf">51.22</span><span class="p">,</span><span class="mf">52.66</span><span class="p">,</span><span class="mf">54.5</span><span class="p">,</span><span class="mf">53.18</span><span class="p">,</span><span class="mf">55.18</span><span class="p">,</span><span class="mf">55.46</span><span class="p">,</span><span class="mf">56.14</span><span class="p">,</span><span class="mf">56.06</span><span class="p">,</span><span class="mf">54.28</span><span class="p">,</span><span class="mf">54.22</span><span class="p">,</span><span class="mf">53.02</span><span class="p">,</span><span class="mf">53.36</span><span class="p">,</span><span class="mf">52.42</span><span class="p">,</span><span class="mf">51.0</span><span class="p">,</span><span class="mf">53.54</span><span class="p">,</span><span class="mf">52.76</span><span class="p">,</span><span class="mf">54.98</span><span class="p">,</span><span class="mf">54.86</span><span class="p">,</span><span class="mf">55.16</span><span class="p">,</span><span class="mf">55.2</span><span class="p">,</span><span class="mf">54.94</span><span class="p">,</span><span class="mf">53.62</span><span class="p">,</span><span class="mf">50.8</span><span class="p">,</span><span class="mf">53.0</span><span class="p">,</span><span class="mf">52.04</span><span class="p">,</span><span class="mf">54.16</span><span class="p">,</span><span class="mf">52.24</span><span class="p">,</span><span class="mf">52.74</span><span class="p">]</span>
<span class="n">res_10</span> <span class="o">=</span> <span class="p">[</span><span class="mf">25.16</span><span class="p">,</span><span class="mf">32.88</span><span class="p">,</span><span class="mf">37.6</span><span class="p">,</span><span class="mf">40.82</span><span class="p">,</span><span class="mf">43.56</span><span class="p">,</span><span class="mf">46.88</span><span class="p">,</span><span class="mf">50.94</span><span class="p">,</span><span class="mf">51.68</span><span class="p">,</span><span class="mf">52.52</span><span class="p">,</span><span class="mf">50.76</span><span class="p">,</span><span class="mf">52.96</span><span class="p">,</span><span class="mf">53.68</span><span class="p">,</span><span class="mf">54.2</span><span class="p">,</span><span class="mf">53.9</span><span class="p">,</span><span class="mf">53.76</span><span class="p">,</span><span class="mf">53.8</span><span class="p">,</span><span class="mf">55.12</span><span class="p">,</span><span class="mf">55.0</span><span class="p">,</span><span class="mf">56.14</span><span class="p">,</span><span class="mf">55.34</span><span class="p">,</span><span class="mf">53.96</span><span class="p">,</span><span class="mf">52.2</span><span class="p">,</span><span class="mf">55.28</span><span class="p">,</span><span class="mf">53.36</span><span class="p">,</span><span class="mf">53.48</span><span class="p">,</span><span class="mf">50.56</span><span class="p">,</span><span class="mf">51.98</span><span class="p">,</span><span class="mf">52.62</span><span class="p">,</span><span class="mf">52.72</span><span class="p">,</span><span class="mf">54.2</span><span class="p">,</span><span class="mf">53.64</span><span class="p">,</span><span class="mf">53.12</span><span class="p">,</span><span class="mf">52.66</span><span class="p">,</span><span class="mf">55.04</span><span class="p">,</span><span class="mf">55.36</span><span class="p">]</span>
<span class="n">plt</span><span class="o">.</span><span class="n">figure</span><span class="p">(</span><span class="n">figsize</span><span class="o">=</span><span class="p">(</span><span class="mi">15</span><span class="p">,</span><span class="mi">5</span><span class="p">))</span>
<span class="n">plt</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="n">idx</span><span class="p">,</span> <span class="n">res_005</span><span class="p">,</span> <span class="n">label</span><span class="o">=</span><span class="s1">&#39;keep rate = 0.05&#39;</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="n">idx</span><span class="p">,</span> <span class="n">res_01</span><span class="p">,</span> <span class="n">label</span><span class="o">=</span><span class="s1">&#39;keep rate = 0.1&#39;</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="n">idx</span><span class="p">,</span> <span class="n">res_05</span><span class="p">,</span> <span class="n">label</span><span class="o">=</span><span class="s1">&#39;keep rate = 0.5&#39;</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="n">idx</span><span class="p">,</span> <span class="n">res_09</span><span class="p">,</span> <span class="n">label</span><span class="o">=</span><span class="s1">&#39;keep rate = 0.9&#39;</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="n">idx</span><span class="p">,</span> <span class="n">res_10</span><span class="p">,</span> <span class="n">label</span><span class="o">=</span><span class="s1">&#39;keep rate = 1.0&#39;</span><span class="p">)</span>   <span class="c1"># No dropout</span>
<span class="n">plt</span><span class="o">.</span><span class="n">title</span><span class="p">(</span><span class="s2">&quot;Accuracy under different dropout rate&quot;</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">legend</span><span class="p">(</span><span class="n">fontsize</span><span class="o">=</span><span class="mi">13</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">grid</span><span class="p">(</span><span class="kc">True</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">show</span><span class="p">()</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt"></div>




<div class="output_text output_subarea ">
<pre>&lt;matplotlib.figure.Figure at 0x2810001fd30&gt;</pre>
</div>

</div>

<div class="output_area">

<div class="prompt"></div>




<div class="output_png output_subarea ">
<img src="
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
AAAASUVORK5CYII=
"
>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h3 id="&#23436;&#20840;&#35757;&#32451;&#35813;&#27169;&#22411;">&#23436;&#20840;&#35757;&#32451;&#35813;&#27169;&#22411;<a class="anchor-link" href="#&#23436;&#20840;&#35757;&#32451;&#35813;&#27169;&#22411;">&#182;</a></h3><p>因为你在单批 CIFAR-10 数据上已经得到了一个不错的准确率了，那你可以尝试在所有五批数据上进行训练。</p>

</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[139]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd">DON&#39;T MODIFY ANYTHING IN THIS CELL</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="n">save_model_path</span> <span class="o">=</span> <span class="s1">&#39;./image_classification&#39;</span>

<span class="nb">print</span><span class="p">(</span><span class="s1">&#39;Training...&#39;</span><span class="p">)</span>
<span class="k">with</span> <span class="n">tf</span><span class="o">.</span><span class="n">Session</span><span class="p">()</span> <span class="k">as</span> <span class="n">sess</span><span class="p">:</span>
    <span class="c1"># Initializing the variables</span>
    <span class="n">sess</span><span class="o">.</span><span class="n">run</span><span class="p">(</span><span class="n">tf</span><span class="o">.</span><span class="n">global_variables_initializer</span><span class="p">())</span>
    <span class="n">start</span> <span class="o">=</span> <span class="n">time</span><span class="p">()</span>
    <span class="c1"># Training cycle</span>
    <span class="k">for</span> <span class="n">epoch</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">epochs</span><span class="p">):</span>
        <span class="c1"># Loop over all batches</span>
        <span class="n">n_batches</span> <span class="o">=</span> <span class="mi">5</span>
        <span class="k">for</span> <span class="n">batch_i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="n">n_batches</span> <span class="o">+</span> <span class="mi">1</span><span class="p">):</span>
            <span class="k">for</span> <span class="n">batch_features</span><span class="p">,</span> <span class="n">batch_labels</span> <span class="ow">in</span> <span class="n">helper</span><span class="o">.</span><span class="n">load_preprocess_training_batch</span><span class="p">(</span><span class="n">batch_i</span><span class="p">,</span> <span class="n">batch_size</span><span class="p">):</span>
                <span class="n">train_neural_network</span><span class="p">(</span><span class="n">sess</span><span class="p">,</span> <span class="n">optimizer</span><span class="p">,</span> <span class="n">keep_probability</span><span class="p">,</span> <span class="n">batch_features</span><span class="p">,</span> <span class="n">batch_labels</span><span class="p">)</span>
            <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;Epoch </span><span class="si">{:&gt;2}</span><span class="s1">, CIFAR-10 Batch </span><span class="si">{}</span><span class="s1">:  &#39;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">epoch</span> <span class="o">+</span> <span class="mi">1</span><span class="p">,</span> <span class="n">batch_i</span><span class="p">),</span> <span class="n">end</span><span class="o">=</span><span class="s1">&#39;&#39;</span><span class="p">)</span>
            <span class="n">print_stats</span><span class="p">(</span><span class="n">sess</span><span class="p">,</span> <span class="n">batch_features</span><span class="p">,</span> <span class="n">batch_labels</span><span class="p">,</span> <span class="n">cost</span><span class="p">,</span> <span class="n">accuracy</span><span class="p">)</span>
    <span class="n">end</span> <span class="o">=</span> <span class="nb">round</span><span class="p">(</span><span class="n">time</span><span class="p">()</span> <span class="o">-</span> <span class="n">start</span><span class="p">,</span> <span class="mi">2</span><span class="p">)</span>
    <span class="nb">print</span><span class="p">(</span><span class="s2">&quot;Time Spent:&quot;</span><span class="p">,</span> <span class="n">end</span><span class="p">)</span>        
    <span class="c1"># Save Model</span>
    <span class="n">saver</span> <span class="o">=</span> <span class="n">tf</span><span class="o">.</span><span class="n">train</span><span class="o">.</span><span class="n">Saver</span><span class="p">()</span>
    <span class="n">save_path</span> <span class="o">=</span> <span class="n">saver</span><span class="o">.</span><span class="n">save</span><span class="p">(</span><span class="n">sess</span><span class="p">,</span> <span class="n">save_model_path</span><span class="p">)</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt"></div>


<div class="output_subarea output_stream output_stdout output_text">
<pre>Training...
Epoch  1, CIFAR-10 Batch 1:  loss = 2.09307    accuracy = 28.66 %
Epoch  1, CIFAR-10 Batch 2:  loss = 1.7693    accuracy = 35.7 %
Epoch  1, CIFAR-10 Batch 3:  loss = 1.59276    accuracy = 39.3 %
Epoch  1, CIFAR-10 Batch 4:  loss = 1.52608    accuracy = 42.88 %
Epoch  1, CIFAR-10 Batch 5:  loss = 1.57057    accuracy = 45.24 %
Epoch  2, CIFAR-10 Batch 1:  loss = 1.57112    accuracy = 45.5 %
Epoch  2, CIFAR-10 Batch 2:  loss = 1.38283    accuracy = 48.64 %
Epoch  2, CIFAR-10 Batch 3:  loss = 1.23539    accuracy = 49.14 %
Epoch  2, CIFAR-10 Batch 4:  loss = 1.28118    accuracy = 49.94 %
Epoch  2, CIFAR-10 Batch 5:  loss = 1.25992    accuracy = 52.32 %
Epoch  3, CIFAR-10 Batch 1:  loss = 1.31034    accuracy = 52.9 %
Epoch  3, CIFAR-10 Batch 2:  loss = 1.18839    accuracy = 54.54 %
Epoch  3, CIFAR-10 Batch 3:  loss = 1.04468    accuracy = 54.14 %
Epoch  3, CIFAR-10 Batch 4:  loss = 1.07237    accuracy = 56.6 %
Epoch  3, CIFAR-10 Batch 5:  loss = 1.04407    accuracy = 56.72 %
Epoch  4, CIFAR-10 Batch 1:  loss = 1.09756    accuracy = 57.1 %
Epoch  4, CIFAR-10 Batch 2:  loss = 1.01959    accuracy = 58.26 %
Epoch  4, CIFAR-10 Batch 3:  loss = 0.908608    accuracy = 57.58 %
Epoch  4, CIFAR-10 Batch 4:  loss = 0.913614    accuracy = 60.42 %
Epoch  4, CIFAR-10 Batch 5:  loss = 0.870336    accuracy = 59.74 %
Epoch  5, CIFAR-10 Batch 1:  loss = 0.938603    accuracy = 59.14 %
Epoch  5, CIFAR-10 Batch 2:  loss = 0.894872    accuracy = 61.36 %
Epoch  5, CIFAR-10 Batch 3:  loss = 0.755662    accuracy = 60.7 %
Epoch  5, CIFAR-10 Batch 4:  loss = 0.783073    accuracy = 62.12 %
Epoch  5, CIFAR-10 Batch 5:  loss = 0.736353    accuracy = 62.36 %
Epoch  6, CIFAR-10 Batch 1:  loss = 0.839645    accuracy = 60.3 %
Epoch  6, CIFAR-10 Batch 2:  loss = 0.764476    accuracy = 63.22 %
Epoch  6, CIFAR-10 Batch 3:  loss = 0.657835    accuracy = 62.7 %
Epoch  6, CIFAR-10 Batch 4:  loss = 0.673994    accuracy = 63.9 %
Epoch  6, CIFAR-10 Batch 5:  loss = 0.62813    accuracy = 62.76 %
Epoch  7, CIFAR-10 Batch 1:  loss = 0.672632    accuracy = 63.64 %
Epoch  7, CIFAR-10 Batch 2:  loss = 0.679402    accuracy = 64.08 %
Epoch  7, CIFAR-10 Batch 3:  loss = 0.545741    accuracy = 63.9 %
Epoch  7, CIFAR-10 Batch 4:  loss = 0.577627    accuracy = 63.96 %
Epoch  7, CIFAR-10 Batch 5:  loss = 0.537175    accuracy = 62.84 %
Epoch  8, CIFAR-10 Batch 1:  loss = 0.573941    accuracy = 64.3 %
Epoch  8, CIFAR-10 Batch 2:  loss = 0.611532    accuracy = 64.16 %
Epoch  8, CIFAR-10 Batch 3:  loss = 0.450235    accuracy = 64.56 %
Epoch  8, CIFAR-10 Batch 4:  loss = 0.48255    accuracy = 64.78 %
Epoch  8, CIFAR-10 Batch 5:  loss = 0.43611    accuracy = 65.14 %
Epoch  9, CIFAR-10 Batch 1:  loss = 0.497509    accuracy = 65.18 %
Epoch  9, CIFAR-10 Batch 2:  loss = 0.517562    accuracy = 66.3 %
Epoch  9, CIFAR-10 Batch 3:  loss = 0.424025    accuracy = 63.72 %
Epoch  9, CIFAR-10 Batch 4:  loss = 0.440471    accuracy = 65.1 %
Epoch  9, CIFAR-10 Batch 5:  loss = 0.347626    accuracy = 66.1 %
Epoch 10, CIFAR-10 Batch 1:  loss = 0.418946    accuracy = 65.32 %
Epoch 10, CIFAR-10 Batch 2:  loss = 0.455364    accuracy = 66.14 %
Epoch 10, CIFAR-10 Batch 3:  loss = 0.323968    accuracy = 66.48 %
Epoch 10, CIFAR-10 Batch 4:  loss = 0.391614    accuracy = 64.9 %
Epoch 10, CIFAR-10 Batch 5:  loss = 0.312599    accuracy = 65.86 %
Epoch 11, CIFAR-10 Batch 1:  loss = 0.329802    accuracy = 65.7 %
Epoch 11, CIFAR-10 Batch 2:  loss = 0.400377    accuracy = 64.26 %
Epoch 11, CIFAR-10 Batch 3:  loss = 0.302707    accuracy = 65.78 %
Epoch 11, CIFAR-10 Batch 4:  loss = 0.318054    accuracy = 65.92 %
Epoch 11, CIFAR-10 Batch 5:  loss = 0.285328    accuracy = 64.58 %
Epoch 12, CIFAR-10 Batch 1:  loss = 0.288765    accuracy = 63.88 %
Epoch 12, CIFAR-10 Batch 2:  loss = 0.364699    accuracy = 63.2 %
Epoch 12, CIFAR-10 Batch 3:  loss = 0.241804    accuracy = 65.52 %
Epoch 12, CIFAR-10 Batch 4:  loss = 0.25681    accuracy = 65.7 %
Epoch 12, CIFAR-10 Batch 5:  loss = 0.234722    accuracy = 65.02 %
Epoch 13, CIFAR-10 Batch 1:  loss = 0.227661    accuracy = 66.7 %
Epoch 13, CIFAR-10 Batch 2:  loss = 0.248815    accuracy = 66.84 %
Epoch 13, CIFAR-10 Batch 3:  loss = 0.186888    accuracy = 65.84 %
Epoch 13, CIFAR-10 Batch 4:  loss = 0.244733    accuracy = 62.76 %
Epoch 13, CIFAR-10 Batch 5:  loss = 0.19178    accuracy = 66.8 %
Epoch 14, CIFAR-10 Batch 1:  loss = 0.186484    accuracy = 67.78 %
Epoch 14, CIFAR-10 Batch 2:  loss = 0.207454    accuracy = 67.06 %
Epoch 14, CIFAR-10 Batch 3:  loss = 0.168    accuracy = 67.12 %
Epoch 14, CIFAR-10 Batch 4:  loss = 0.193025    accuracy = 64.54 %
Epoch 14, CIFAR-10 Batch 5:  loss = 0.166023    accuracy = 68.16 %
Epoch 15, CIFAR-10 Batch 1:  loss = 0.158841    accuracy = 66.8 %
Epoch 15, CIFAR-10 Batch 2:  loss = 0.168162    accuracy = 66.34 %
Epoch 15, CIFAR-10 Batch 3:  loss = 0.141671    accuracy = 67.26 %
Epoch 15, CIFAR-10 Batch 4:  loss = 0.14164    accuracy = 66.42 %
Epoch 15, CIFAR-10 Batch 5:  loss = 0.123076    accuracy = 68.32 %
Time Spent: 65.21
</pre>
</div>
</div>

</div>
</div>

</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h3 id="&#21367;&#31215;&#23618;&#36755;&#20986;&#20010;&#25968;">&#21367;&#31215;&#23618;&#36755;&#20986;&#20010;&#25968;<a class="anchor-link" href="#&#21367;&#31215;&#23618;&#36755;&#20986;&#20010;&#25968;">&#182;</a></h3><ul>
<li>conv_num_ouput 越大，训练耗时越大，但准确率没有明显变化。</li>
</ul>
<table>
<thead><tr>
<th>time (sec)</th>
<th>卷积层输出</th>
<th>卷积层尺寸</th>
<th>卷积层步长</th>
<th>池化层尺寸</th>
<th>池化层步长</th>
<th>全链接层输出</th>
<th>准确率</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>54</strong></td>
<td><strong>8</strong></td>
<td>[3,3]</td>
<td>1</td>
<td>[2,2]</td>
<td>1</td>
<td>128</td>
<td><strong>61%</strong></td>
</tr>
<tr>
<td><strong>58</strong></td>
<td><strong>16</strong></td>
<td>[3,3]</td>
<td>1</td>
<td>[2,2]</td>
<td>1</td>
<td>128</td>
<td><strong>62%</strong></td>
</tr>
<tr>
<td><strong>67</strong></td>
<td><strong>32</strong></td>
<td>[3,3]</td>
<td>1</td>
<td>[2,2]</td>
<td>1</td>
<td>128</td>
<td><strong>62%</strong></td>
</tr>
<tr>
<td><strong>91</strong></td>
<td><strong>64</strong></td>
<td>[3,3]</td>
<td>1</td>
<td>[2,2]</td>
<td>1</td>
<td>128</td>
<td><strong>62%</strong></td>
</tr>
<tr>
<td><strong>131</strong></td>
<td><strong>128</strong></td>
<td>[3,3]</td>
<td>1</td>
<td>[2,2]</td>
<td>1</td>
<td>128</td>
<td><strong>61%</strong></td>
</tr>
</tbody>
</table>
<ul>
<li>以上结果基于以下参数:<ul>
<li>训练代数 epoch 15</li>
<li>batch_size = 64</li>
<li>keep_prob = 0.5</li>
<li>stddev = 0.01</li>
</ul>
</li>
</ul>

</div>
</div>
</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h3 id="&#20840;&#38142;&#25509;&#23618;&#36755;&#20986;&#20010;&#25968;">&#20840;&#38142;&#25509;&#23618;&#36755;&#20986;&#20010;&#25968;<a class="anchor-link" href="#&#20840;&#38142;&#25509;&#23618;&#36755;&#20986;&#20010;&#25968;">&#182;</a></h3><ul>
<li>full_num_ouput 越大，准确率有稳定的明显提升</li>
</ul>
<table>
<thead><tr>
<th>time (sec)</th>
<th>卷积层输出</th>
<th>卷积层尺寸</th>
<th>卷积层步长</th>
<th>池化层尺寸</th>
<th>池化层步长</th>
<th>全链接层输出</th>
<th>准确率</th>
<th>达到60%准确率的代数</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>66</strong></td>
<td>16</td>
<td>[3,3]</td>
<td>1</td>
<td>[2,2]</td>
<td>1</td>
<td><strong>64</strong></td>
<td><strong>59%</strong></td>
<td>N/A</td>
</tr>
<tr>
<td><strong>56</strong></td>
<td>16</td>
<td>[3,3]</td>
<td>1</td>
<td>[2,2]</td>
<td>1</td>
<td><strong>128</strong></td>
<td><strong>62%</strong></td>
<td>#8</td>
</tr>
<tr>
<td><strong>60</strong></td>
<td>16</td>
<td>[3,3]</td>
<td>1</td>
<td>[2,2]</td>
<td>1</td>
<td><strong>256</strong></td>
<td><strong>63%</strong></td>
<td>#5</td>
</tr>
<tr>
<td><strong>66</strong></td>
<td>16</td>
<td>[3,3]</td>
<td>1</td>
<td>[2,2]</td>
<td>1</td>
<td><strong>512</strong></td>
<td><strong>64%</strong></td>
<td>#3</td>
</tr>
<tr>
<td><strong>82</strong></td>
<td>16</td>
<td>[3,3]</td>
<td>1</td>
<td>[2,2]</td>
<td>1</td>
<td><strong>1024</strong></td>
<td><strong>65%</strong></td>
<td>#3</td>
</tr>
</tbody>
</table>
<ul>
<li>以上结果基于以下参数:<ul>
<li>训练代数 epoch 15</li>
<li>batch_size = 64</li>
<li>keep_prob = 0.5</li>
<li>stddev = 0.01</li>
</ul>
</li>
</ul>

</div>
</div>
</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h3 id="&#21367;&#31215;&#23618;&#20018;&#32852;&#20010;&#25968;">&#21367;&#31215;&#23618;&#20018;&#32852;&#20010;&#25968;<a class="anchor-link" href="#&#21367;&#31215;&#23618;&#20018;&#32852;&#20010;&#25968;">&#182;</a></h3><ul>
<li>将卷积层多层级联可以提升准确率。</li>
</ul>
<table>
<thead><tr>
<th>time (sec)</th>
<th>卷积层输出</th>
<th>卷积层尺寸</th>
<th>卷积层步长</th>
<th>池化层尺寸</th>
<th>池化层步长</th>
<th>全链接层输出</th>
<th>准确率</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>66</strong></td>
<td><strong>16</strong></td>
<td>[3,3]</td>
<td>1</td>
<td>[2,2]</td>
<td>1</td>
<td>1024</td>
<td><strong>65%</strong></td>
</tr>
<tr>
<td><strong>120</strong></td>
<td><strong>16,16</strong></td>
<td>[3,3]</td>
<td>1</td>
<td>[2,2]</td>
<td>1</td>
<td>1024</td>
<td><strong>66%</strong></td>
</tr>
<tr>
<td><strong>212</strong></td>
<td><strong>16,16,16</strong></td>
<td>[3,3]</td>
<td>1</td>
<td>[2,2]</td>
<td>1</td>
<td>1024</td>
<td><strong>67%</strong></td>
</tr>
<tr>
<td><strong>260</strong></td>
<td><strong>16,16,16,16,16</strong></td>
<td>[3,3]</td>
<td>1</td>
<td>[2,2]</td>
<td>1</td>
<td>1024</td>
<td><strong>64%</strong></td>
</tr>
</tbody>
</table>

</div>
</div>
</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h3 id="&#20840;&#38142;&#25509;&#23618;&#20018;&#32852;&#20010;&#25968;">&#20840;&#38142;&#25509;&#23618;&#20018;&#32852;&#20010;&#25968;<a class="anchor-link" href="#&#20840;&#38142;&#25509;&#23618;&#20018;&#32852;&#20010;&#25968;">&#182;</a></h3><p>尝试了增加全链接层的级联个数，但是没有明显的准确率提升。</p>

</div>
</div>
</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h3 id="&#21367;&#31215;&#28388;&#27874;&#22120;&#23610;&#23544;">&#21367;&#31215;&#28388;&#27874;&#22120;&#23610;&#23544;<a class="anchor-link" href="#&#21367;&#31215;&#28388;&#27874;&#22120;&#23610;&#23544;">&#182;</a></h3><p>测试微调滤波器的尺寸 [2 x 2], [3 x 3], [4 x 4], [8 x 8]，结果显示 [3 x 3] 最好。</p>

</div>
</div>
</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h3 id="&#20877;&#27425;&#35752;&#35770;batch_size&#30340;&#24433;&#21709;">&#20877;&#27425;&#35752;&#35770;batch_size&#30340;&#24433;&#21709;<a class="anchor-link" href="#&#20877;&#27425;&#35752;&#35770;batch_size&#30340;&#24433;&#21709;">&#182;</a></h3><ul>
<li>在后期调整模型参数的时候，一开始使用的batch_size都是64，从训练上看，收敛速度相当快，甚至能够达到第2代训练就能上60%，不过相对的完整15代训练时间要200多秒才能完成三层卷积层的模型。</li>
</ul>
<ul>
<li>后来想起来batch_size能够影响速度，就将batch_size升至512，训练速度可以减少到65秒，很爽，不过同时也发现收敛速度变慢，需要到第5代才能爬升到60%的准确率。</li>
</ul>
<p>综上所述，观察到batch_size会影响收敛速率和训练速度。</p>

</div>
</div>
</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h1 id="&#26816;&#26597;&#28857;">&#26816;&#26597;&#28857;<a class="anchor-link" href="#&#26816;&#26597;&#28857;">&#182;</a></h1><p>该模型已经被存储到你的硬盘中。</p>
<h2 id="&#27979;&#35797;&#27169;&#22411;">&#27979;&#35797;&#27169;&#22411;<a class="anchor-link" href="#&#27979;&#35797;&#27169;&#22411;">&#182;</a></h2><p>这部分将在测试数据集上测试你的模型。这边得到的准确率将作为你的最终准确率。你应该得到一个高于 50% 准确率。如果它没有超过 50%，那么你需要继续调整模型架构及参数。</p>

</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[142]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd">DON&#39;T MODIFY ANYTHING IN THIS CELL</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="o">%</span><span class="k">matplotlib</span> inline
<span class="o">%</span><span class="k">config</span> InlineBackend.figure_format = &#39;retina&#39;

<span class="kn">import</span> <span class="nn">tensorflow</span> <span class="k">as</span> <span class="nn">tf</span>
<span class="kn">import</span> <span class="nn">pickle</span>
<span class="kn">import</span> <span class="nn">helper</span>
<span class="kn">import</span> <span class="nn">random</span>

<span class="c1"># Set batch size if not already set</span>
<span class="k">try</span><span class="p">:</span>
    <span class="k">if</span> <span class="n">batch_size</span><span class="p">:</span>
        <span class="k">pass</span>
<span class="k">except</span> <span class="ne">NameError</span><span class="p">:</span>
    <span class="n">batch_size</span> <span class="o">=</span> <span class="mi">64</span>

<span class="n">save_model_path</span> <span class="o">=</span> <span class="s1">&#39;./image_classification&#39;</span>
<span class="n">n_samples</span> <span class="o">=</span> <span class="mi">4</span>
<span class="n">top_n_predictions</span> <span class="o">=</span> <span class="mi">3</span>

<span class="k">def</span> <span class="nf">test_model</span><span class="p">():</span>
    <span class="sd">&quot;&quot;&quot;</span>
<span class="sd">    Test the saved model against the test dataset</span>
<span class="sd">    &quot;&quot;&quot;</span>

    <span class="c1"># 拿到相应的验证集专用数据</span>
    <span class="n">test_features</span><span class="p">,</span> <span class="n">test_labels</span> <span class="o">=</span> <span class="n">pickle</span><span class="o">.</span><span class="n">load</span><span class="p">(</span><span class="nb">open</span><span class="p">(</span><span class="s1">&#39;preprocess_training.p&#39;</span><span class="p">,</span> <span class="n">mode</span><span class="o">=</span><span class="s1">&#39;rb&#39;</span><span class="p">))</span>
    <span class="nb">print</span><span class="p">(</span><span class="n">test_features</span><span class="o">.</span><span class="n">shape</span><span class="p">)</span>
    <span class="n">loaded_graph</span> <span class="o">=</span> <span class="n">tf</span><span class="o">.</span><span class="n">Graph</span><span class="p">()</span>

    <span class="k">with</span> <span class="n">tf</span><span class="o">.</span><span class="n">Session</span><span class="p">(</span><span class="n">graph</span><span class="o">=</span><span class="n">loaded_graph</span><span class="p">)</span> <span class="k">as</span> <span class="n">sess</span><span class="p">:</span>
        <span class="c1"># Load model</span>
        <span class="n">loader</span> <span class="o">=</span> <span class="n">tf</span><span class="o">.</span><span class="n">train</span><span class="o">.</span><span class="n">import_meta_graph</span><span class="p">(</span><span class="n">save_model_path</span> <span class="o">+</span> <span class="s1">&#39;.meta&#39;</span><span class="p">)</span>
        <span class="n">loader</span><span class="o">.</span><span class="n">restore</span><span class="p">(</span><span class="n">sess</span><span class="p">,</span> <span class="n">save_model_path</span><span class="p">)</span>

        <span class="c1"># Get Tensors from loaded model</span>
        <span class="n">loaded_x</span> <span class="o">=</span> <span class="n">loaded_graph</span><span class="o">.</span><span class="n">get_tensor_by_name</span><span class="p">(</span><span class="s1">&#39;x:0&#39;</span><span class="p">)</span>
        <span class="n">loaded_y</span> <span class="o">=</span> <span class="n">loaded_graph</span><span class="o">.</span><span class="n">get_tensor_by_name</span><span class="p">(</span><span class="s1">&#39;y:0&#39;</span><span class="p">)</span>
        <span class="n">loaded_keep_prob</span> <span class="o">=</span> <span class="n">loaded_graph</span><span class="o">.</span><span class="n">get_tensor_by_name</span><span class="p">(</span><span class="s1">&#39;keep_prob:0&#39;</span><span class="p">)</span>
        <span class="n">loaded_logits</span> <span class="o">=</span> <span class="n">loaded_graph</span><span class="o">.</span><span class="n">get_tensor_by_name</span><span class="p">(</span><span class="s1">&#39;logits:0&#39;</span><span class="p">)</span>
        <span class="n">loaded_acc</span> <span class="o">=</span> <span class="n">loaded_graph</span><span class="o">.</span><span class="n">get_tensor_by_name</span><span class="p">(</span><span class="s1">&#39;accuracy:0&#39;</span><span class="p">)</span>
        
        <span class="c1"># Get accuracy in batches for memory limitations</span>
        <span class="n">test_batch_acc_total</span> <span class="o">=</span> <span class="mi">0</span>
        <span class="n">test_batch_count</span> <span class="o">=</span> <span class="mi">0</span>
        
        <span class="k">for</span> <span class="n">train_feature_batch</span><span class="p">,</span> <span class="n">train_label_batch</span> <span class="ow">in</span> <span class="n">helper</span><span class="o">.</span><span class="n">batch_features_labels</span><span class="p">(</span><span class="n">test_features</span><span class="p">,</span> <span class="n">test_labels</span><span class="p">,</span> <span class="n">batch_size</span><span class="p">):</span>
            <span class="n">test_batch_acc_total</span> <span class="o">+=</span> <span class="n">sess</span><span class="o">.</span><span class="n">run</span><span class="p">(</span>
                <span class="n">loaded_acc</span><span class="p">,</span>
                <span class="n">feed_dict</span><span class="o">=</span><span class="p">{</span><span class="n">loaded_x</span><span class="p">:</span> <span class="n">train_feature_batch</span><span class="p">,</span> <span class="n">loaded_y</span><span class="p">:</span> <span class="n">train_label_batch</span><span class="p">,</span> <span class="n">loaded_keep_prob</span><span class="p">:</span> <span class="mf">1.0</span><span class="p">})</span>
            <span class="n">test_batch_count</span> <span class="o">+=</span> <span class="mi">1</span>

        <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;Testing Accuracy: </span><span class="si">{}</span><span class="se">\n</span><span class="s1">&#39;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">test_batch_acc_total</span><span class="o">/</span><span class="n">test_batch_count</span><span class="p">))</span>

        <span class="c1"># Print Random Samples</span>
        <span class="n">random_test_features</span><span class="p">,</span> <span class="n">random_test_labels</span> <span class="o">=</span> <span class="nb">tuple</span><span class="p">(</span><span class="nb">zip</span><span class="p">(</span><span class="o">*</span><span class="n">random</span><span class="o">.</span><span class="n">sample</span><span class="p">(</span><span class="nb">list</span><span class="p">(</span><span class="nb">zip</span><span class="p">(</span><span class="n">test_features</span><span class="p">,</span> <span class="n">test_labels</span><span class="p">)),</span> <span class="n">n_samples</span><span class="p">)))</span>
        <span class="n">random_test_predictions</span> <span class="o">=</span> <span class="n">sess</span><span class="o">.</span><span class="n">run</span><span class="p">(</span>
            <span class="n">tf</span><span class="o">.</span><span class="n">nn</span><span class="o">.</span><span class="n">top_k</span><span class="p">(</span><span class="n">tf</span><span class="o">.</span><span class="n">nn</span><span class="o">.</span><span class="n">softmax</span><span class="p">(</span><span class="n">loaded_logits</span><span class="p">),</span> <span class="n">top_n_predictions</span><span class="p">),</span>
            <span class="n">feed_dict</span><span class="o">=</span><span class="p">{</span><span class="n">loaded_x</span><span class="p">:</span> <span class="n">random_test_features</span><span class="p">,</span> <span class="n">loaded_y</span><span class="p">:</span> <span class="n">random_test_labels</span><span class="p">,</span> <span class="n">loaded_keep_prob</span><span class="p">:</span> <span class="mf">1.0</span><span class="p">})</span>
        <span class="n">helper</span><span class="o">.</span><span class="n">display_image_predictions</span><span class="p">(</span><span class="n">random_test_features</span><span class="p">,</span> <span class="n">random_test_labels</span><span class="p">,</span> <span class="n">random_test_predictions</span><span class="p">)</span>


<span class="n">test_model</span><span class="p">()</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt"></div>


<div class="output_subarea output_stream output_stdout output_text">
<pre>(10000, 32, 32, 3)
INFO:tensorflow:Restoring parameters from ./image_classification
Testing Accuracy: 0.6753159463405609

</pre>
</div>
</div>

<div class="output_area">

<div class="prompt"></div>




<div class="output_png output_subarea ">
<img src="
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
VB34bLxtAR4DPh1C+Pb5Dh5COGpmr8PrHf8qcD3wLPBhYID5WRz379q1i+3bZyxmISIiZ7Br1y6A
/sV4bJt5M7eIiJwPM5sAisDPFnsuImSH0jyzqLMQyZztNdkPDIcQLlmY6WQUORYRuTB2wux1kEUW
UnKSo16PUi/q+TWpDXkiIiIiIpEWxyIiIiIikRbHIiIiIiKRFsciIiIiIpEWxyIiIiIikUq5iYiI
iIhEihyLiIiIiERaHIuIiIiIRFoci4iIiIhEWhyLiIiIiERaHIuIiIiIRFoci4iIiIhEWhyLiIiI
iERaHIuIzIGZbTSzvzKzA2Y2YWYDZna3ma1YjHFE5uO1FO8TZvl46ULOXxqHmf2amX3ezB4ys+H4
+vkfL3OsRX+P1CEgIiJnYWZbgEeAtcA3gGeAG4BbgWeB14UQji3UOCLz+JocAHqBu2foPhVC+Nx8
zVkal5k9AVwDnAJeBK4E/iaE8L5zHKcu3iObLvQDiIg0gD/D36x/J4Tw+aTRzP4E+CjwGeD2BRxH
ZD5fS4MhhLvmfYaynHwUXxT/HLgZ+N7LHKcu3iMVORYROYMYyfg5MABsCSHUcn1dwEHAgLUhhJEL
PY7IfL6WYuSYEEL/BZquLDNmdgu+OD6nyHE9vUcq51hE5Mxujbf359+sAUIIJ4EfAu3AaxdoHJH5
fi21mNn7zOxOM/uImd1qZsV5nK/IXNTNe6QWxyIiZ3ZFvH1ulv7d8fbyBRpHZL5fS+uBe/E/Wd8N
PADsNrObX/YMRc5d3bxHanEsInJmPfF2aJb+pL13gcYRmc/X0n8D3owvkDuAVwF/DvQD95nZNS9/
miLnpG7eI7UhT0REZJkKIXxqStNO4HYzOwV8HLgLeOdCz0tkMSlyLCJyZkm0omeW/qR9cIHGEVmI
19I98faN5zGGyLmom/dILY5FRM7s2Xg7W57bZfF2tjy5+R5HZCFeS0fibcd5jCFyLurmPVKLYxGR
M0vqdb7VzE57z4zlhV4HjAKPLtA4IgvxWkoqAjx/HmOInIu6eY/U4lhE5AxCCHuA+/ENSv96Sven
8MjavUndTTMrmdmVsWbnyx5HZDbz9Zo0s21mNi0ybGb9wBfily/rCGCR2SyF90gdAiIichYzHGm6
C7gRr8v5HHBTcqRpXFjsBfZNPVjhXMYROZP5eE2a2V34prsfAPuAk8AW4DagFfgW8M4QQnkBnpIs
YWb2DuAd8cv1wC/jf3V4KLYdDSH8Xry2nzp/j9TiWERkDszsYuDTwNuAVfhpTV8HPhVCOJG7rp9Z
3vjPZRyRsznf12SsY3w7cC1ZKbdB4Am87vG9QYsEmYP4i9Z/OMMl6WtvKbxHanEsIiIiIhIp51hE
REREJNLiWEREREQk0uJYRERERCTS4lhEREREJNLiWEREREQk0uJYRERERCTS4lhEREREJNLiWERE
REQk0uJYRERERCTS4lhEREREJNLiWEREREQk0uJYRERERCTS4lhEREREJNLiWEREREQk0uJYRERE
RCTS4lhEREREJNLiWEREREQk+v9U4vrdWvwIIQAAAABJRU5ErkJggg==
"
width=355
height=319
>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h3 id="&#27979;&#35797;&#32467;&#26524;">&#27979;&#35797;&#32467;&#26524;<a class="anchor-link" href="#&#27979;&#35797;&#32467;&#26524;">&#182;</a></h3><blockquote><p>Testing Accuracy: 0.6753159463405609</p>
</blockquote>
<p>可以看到，经过对每个可调参数的fine tune，最终使用以下参数搭配达到了<strong>67%</strong>的准确度。准备尝试一些新的方法，进一步提升准确度。</p>
<ul>
<li>epoch = 15</li>
<li>batch_size = 64</li>
<li>keep_prob = 0.5</li>
<li>stddev = 0.01</li>
<li>卷积层输出结构：16, 16, 16 (三层级联)</li>
<li>卷积层激活函数：ReLU</li>
<li>卷积滤波器尺寸：3 x 3</li>
<li>卷积滤波器步长：1</li>
<li>池化滤波器尺寸：2 x 2</li>
<li>池化滤波器步长：1</li>
<li>全链接层输出结构：1024 （单层）</li>
<li>全链接层激活函数：ReLU</li>
<li>Padding：SAME Padding</li>
</ul>

</div>
</div>
</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h2 id="&#20026;&#20160;&#20040;&#20165;&#26377;-50%~-80%-&#30340;&#20934;&#30830;&#29575;&#65311;">&#20026;&#20160;&#20040;&#20165;&#26377; 50%~ 80% &#30340;&#20934;&#30830;&#29575;&#65311;<a class="anchor-link" href="#&#20026;&#20160;&#20040;&#20165;&#26377;-50%~-80%-&#30340;&#20934;&#30830;&#29575;&#65311;">&#182;</a></h2><p>你也许会觉得奇怪，为什么你的准确率总是提高不上去。对于简单的 CNN 网络而言，50% 并非是很差的表现。纯粹的猜测只会得到 10% 的准确率（因为一共有 10 类）。这是因为还有许多许多能够应用到你模型的技巧。在你做完了该项目之后，你可以探索探索我们给你推荐的一些方法。</p>
<h2 id="&#25552;&#20132;&#35813;&#39033;&#30446;">&#25552;&#20132;&#35813;&#39033;&#30446;<a class="anchor-link" href="#&#25552;&#20132;&#35813;&#39033;&#30446;">&#182;</a></h2><p>在提交项目前，请确保你在运行了所有的 cell 之后保存了项目。将项目储存为 "image_classification.ipynb" 并导出为一个 HTML 文件。你可以再菜单栏中选择 File -&gt; Download as 进行导出。请将 "helper.py" 及  "problem_unittests.py" 文件也放在你的提交文件中。</p>

</div>
</div>
</div>
    </div>
  </div>
</body>

 


</html>
